Zee*_*Zee 6 ruby ruby-on-rails
有没有办法让我在 ruby 类中同时创建同名的类和实例方法?我在课堂上创建了一个版本Foo
class Foo
def self.bar
"hello world"
end
def bar
self.class.bar
end
end
Run Code Online (Sandbox Code Playgroud)
虽然这可行,但是否有更优雅的方法来实现这一目标?现在,我必须复制约 10 个方法作为实例和类方法。
Forwardable你可以像这样使用 Ruby :
# in foo.rb
class Foo
extend Forwardable
def_delegators :Foo, :bar, :baz, :qux
def self.bar
"hello bar"
end
end
Run Code Online (Sandbox Code Playgroud)
然后
> Foo.bar #=> "hello bar"
> Foo.new.bar #=> "hello bar"
Run Code Online (Sandbox Code Playgroud)
你也可以method_missing像这样使用:
> Foo.bar #=> "hello bar"
> Foo.new.bar #=> "hello bar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |