DJ *_*uby 3 ruby methods module include nomethoderror
给出以下示例:
module A
module B
def whoa
puts 'Whoa!'
end
end
end
Run Code Online (Sandbox Code Playgroud)
如何访问whoa方法?
1.9.3p392 :047 > A.B.whoa
NoMethodError: undefined method `B' for A:Module
1.9.3p392 :048 > A::B.whoa
NoMethodError: undefined method `whoa' for A::B:Module
1.9.3p392 :049 > A::B::whoa
NoMethodError: undefined method `whoa' for A::B:Module
Run Code Online (Sandbox Code Playgroud)
这些方法似乎都不起作用.
假设您不需要类级方法,您还可以将模块包含到类中,实例化该类的对象并调用whoa
:
class C
include A::B
end
c = C.new
c.whoa
# Whoa!
Run Code Online (Sandbox Code Playgroud)
您已将方法定义为实例方法.如果要在没有实例的情况下使用该方法,则它应该是模块上的类方法:
module A
module B
def self.whoa
puts 'Whoa!'
end
end
end
1.9.3p327 :009 > A::B.whoa
Whoa!
=> nil
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
912 次 |
最近记录: |