下面的代码片段给了我一个NoMethodError
。我有点困惑为什么它会给我一个错误,为什么我在模块中找不到任何有关嵌套方法的东西。有人可以解释为什么这不起作用吗?我可以窝#34; defs"在模块中?
module HowToBasic
module_function
def say_id_and_say_name(id)
# nested method
def say_id(id)
p id
end
# errors here with `say_id_and_say_name':
# undefined method `say_id' for HowToBasic:Module (NoMethodError)
# from teststuff.rb:24:in `<main>'
say_id(id)
end
end
HowToBasic.say_id_and_say_name("99999")
版本: 红宝石2.3.1p112
我看了一下,却找不到任何关于此的内容:
答案 0 :(得分:4)
您在方法定义中缺少self
关键字 - 没有它say_id_and_say_name
只是一个实例方法,因此无法在模块上调用它。
module HowToBasic
module_function
def self.say_id(id)
p id
end
def self.say_id_and_say_name(id)
say_id(id)
end
end
HowToBasic.say_id_and_say_name("99999")