在Ruby中定义模块内部的方法(NoMethodError)

阿玛纳特

我正在学习红宝石,遇到了一些我不理解的问题。我知道ruby中的模块用于通过 :(或。)命名和与include指令混合使用当我将一些方法分组到模块中而不将它们放在类中时,就会出现问题。这是一个例子:

module Familiar
  #this will not work
    def ask_age
      return "How old are you?"
    end
  #this will work
    def Familiar::greeting
      return "What's up?"
    end
end
# this call returns **NoMethodError** 
puts(Familiar::ask_age()) 
# this call works fine
puts(Familiar::greeting()) 

为什么我需要包括名称空间来定义方法,我已经在名称空间内熟悉,为什么我必须重复自我并将Familiar :: greeting,您可以通过以下链接在线测试示例:http:// codepad .org / VUgCVPXN

克里斯·希尔德

有关ModuleRuby文档在其介绍文本中对此进行了回答。

这种形式:

module Familiar
  def ask_age
    return "How old are you?"
  end
end

定义#ask_ageFamiliar上实例方法。但是,您无法实例化模块,因此无法直接使用它们的实例方法。您将它们混合到其他类别中。模块中的实例方法或多或少直接不可访问。

相比之下,这种形式:

module Familiar
  def self.ask_age
    return "What's up?"
  end
end

定义::ask_age模块功能它是可直接调用的,并且在将模块混入另一个类时不会出现在包含的类上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ruby 模块中的 NoMethodError

来自分类Dev

NoMethodError:Hanami中带有自定义模块的String的未定义方法

来自分类Dev

ruby - NoMethodError:未定义的方法“状态”

来自分类Dev

Ruby中的模块方法

来自分类Dev

在Ruby 2.2中使用Mongoid时出现NoMethodError未定义方法'convert_key'

来自分类Dev

Rails NoMethodError(Hyperclient:模块的未定义方法“ new”)

来自分类Dev

NoMethodError:main:Object的未定义方法“内部”

来自分类Dev

NoMethodError:main:Object的未定义方法“内部”

来自分类Dev

模块方法返回 NoMethodError

来自分类Dev

面向nil:NilClass的Ruby未定义方法“ []”(NoMethodError)

来自分类Dev

Ruby on Rails NoMethodError“未定义的方法'translates'”

来自分类Dev

Ruby / calabash:2:Fixnum的未定义方法“ each”(NoMethodError)

来自分类Dev

Ruby on Rails Rspec NoMethodError:未定义的方法“ not_to”

来自分类Dev

未定义的方法“ +”,用于nil:NilClass(NoMethodError)-Ruby

来自分类Dev

Ruby:获取未定义的方法错误NoMethodError

来自分类Dev

Ruby:3212:Fixnum 的未定义方法“数字”(NoMethodError)

来自分类Dev

学习 Ruby on Rails:NoMethodError(未定义方法 `[]' for nil:NilClass):

来自分类Dev

我可以在Ruby中的模块内部使用模块吗?

来自分类Dev

Ruby模块中的覆盖方法

来自分类Dev

遍历模块中定义的方法

来自分类Dev

向Ruby类添加的方法在MiniTest中抛出NoMethodError

来自分类Dev

Products#index未定义方法“ each”中的NoMethodError

来自分类Dev

“ Revisers#new中的NoMethodError”的未定义方法“ input”

来自分类Dev

NoMethodError:设置中未定义的方法“用户”

来自分类Dev

事件中的NoMethodError nil:NilClass的未定义方法“名字”

来自分类Dev

Users#index中的NoMethodError:未定义的方法“名称”

来自分类Dev

Ruby中的内部插件系统和模块(用作框架的Rails)

来自分类Dev

在方法调用之前,nil:NilClass(NoMethodError)的Ruby未定义方法“ []”

来自分类Dev

使用Ruby获取方法错误“ NoMethodError:nil:NilClass的未定义方法'each'”

Related 相关文章

  1. 1

    ruby 模块中的 NoMethodError

  2. 2

    NoMethodError:Hanami中带有自定义模块的String的未定义方法

  3. 3

    ruby - NoMethodError:未定义的方法“状态”

  4. 4

    Ruby中的模块方法

  5. 5

    在Ruby 2.2中使用Mongoid时出现NoMethodError未定义方法'convert_key'

  6. 6

    Rails NoMethodError(Hyperclient:模块的未定义方法“ new”)

  7. 7

    NoMethodError:main:Object的未定义方法“内部”

  8. 8

    NoMethodError:main:Object的未定义方法“内部”

  9. 9

    模块方法返回 NoMethodError

  10. 10

    面向nil:NilClass的Ruby未定义方法“ []”(NoMethodError)

  11. 11

    Ruby on Rails NoMethodError“未定义的方法'translates'”

  12. 12

    Ruby / calabash:2:Fixnum的未定义方法“ each”(NoMethodError)

  13. 13

    Ruby on Rails Rspec NoMethodError:未定义的方法“ not_to”

  14. 14

    未定义的方法“ +”,用于nil:NilClass(NoMethodError)-Ruby

  15. 15

    Ruby:获取未定义的方法错误NoMethodError

  16. 16

    Ruby:3212:Fixnum 的未定义方法“数字”(NoMethodError)

  17. 17

    学习 Ruby on Rails:NoMethodError(未定义方法 `[]' for nil:NilClass):

  18. 18

    我可以在Ruby中的模块内部使用模块吗?

  19. 19

    Ruby模块中的覆盖方法

  20. 20

    遍历模块中定义的方法

  21. 21

    向Ruby类添加的方法在MiniTest中抛出NoMethodError

  22. 22

    Products#index未定义方法“ each”中的NoMethodError

  23. 23

    “ Revisers#new中的NoMethodError”的未定义方法“ input”

  24. 24

    NoMethodError:设置中未定义的方法“用户”

  25. 25

    事件中的NoMethodError nil:NilClass的未定义方法“名字”

  26. 26

    Users#index中的NoMethodError:未定义的方法“名称”

  27. 27

    Ruby中的内部插件系统和模块(用作框架的Rails)

  28. 28

    在方法调用之前,nil:NilClass(NoMethodError)的Ruby未定义方法“ []”

  29. 29

    使用Ruby获取方法错误“ NoMethodError:nil:NilClass的未定义方法'each'”

热门标签

归档