Xer*_*ero 2 ruby ruby-on-rails
鉴于在Rails上命名对象的约定是这样的:
/app/models/foo/bar.rb => class Foo::Bar
Run Code Online (Sandbox Code Playgroud)
如果我有一个文件夹结构:
/app/models/foo/bar/object1.rb
/app/models/foo/bar/object2.rb
/app/models/foo/main.rb
Run Code Online (Sandbox Code Playgroud)
要从我的主要调用此对象,我必须这样做:
class Foo::Main
def some_method
Foo::Bar::Object1.new
Foo::Bar::Object2.new
end
end
Run Code Online (Sandbox Code Playgroud)
这工作很好.但在这里我的问题:
有没有办法提高对象名称的可读性?
鉴于我Foo::Main在同一名称空间中Foo; 有没有办法用更短的名字来称呼他们(Foo::Bar::Object1.new和Foo::Bar::Object2.new)?
我想他们的名字Bar::Object1.new,并Bar::Object2.new在这方面(或Object1.new和Object2.new)
class Foo::Main
def some_method
Bar::Object1.new
Bar::Object2.new
end
end
Run Code Online (Sandbox Code Playgroud)
这段代码是我所期望的例子,但它不起作用.
如果要使用顶层模块,则需要使用嵌套而不使用A::B速记:
module Foo
class Main
def some_method
Bar::Object1.new
Bar::Object2.new
end
end
end
Run Code Online (Sandbox Code Playgroud)
资料来源: