Ruby 方法可见性:未定义的方法? [关闭]
Posted
技术标签:
【中文标题】Ruby 方法可见性:未定义的方法? [关闭]【英文标题】:Ruby method visibility: undefined method? [closed] 【发布时间】:2012-09-07 12:23:26 【问题描述】:我还是 ruby 的新手。我不明白方法的可见性。文档说,默认情况下所有方法都是公共的(除非另有定义)。所以这应该有效(但它没有,MWE):
modules/example.rb
:
class Example
def do_stuff
puts 'hello world'
end
end
和testing.rb
:
load 'modules/example.rb'
Example.new
Example.do_stuff
致电$ ruby testing.rb
结果
testing.rb:9:in `<main>': undefined method `do_stuff' for Example:Class (NoMethodError)
有人能解释为什么吗?以及如何解决我可以直接调用do_stuff
?
【问题讨论】:
不知道为什么这被否决了?投票赞成 【参考方案1】:您正在定义一个实例方法,并且需要在 Example 类的实例上调用它:
ex_instance = Example.new
ex_instance.do_stuff
如果要直接调用,需要将其定义为类方法:
class Example
def self.do_stuff
puts 'hello world'
end
end
那么你可以这样调用它而不需要调用Example.new
Example.do_stuff
【讨论】:
谢谢。我瞎了——那真是太愚蠢了。 :)以上是关于Ruby 方法可见性:未定义的方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Ruby 方法 instance_eval() 和 send() 不会否定私有可见性的好处吗?