加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用现有常量命名Ruby方法

发布时间:2020-12-17 03:00:16 所属栏目:百科 来源:网络整理
导读:module Foo def self.bar "Module.bar" endenddef Foo "main.Foo"endputs Foo # Fooputs Foo.bar # Module.barputs Foo() # main.Fooputs Foo.class # Module 为什么模块Foo和方法Foo可以在同一名称空间中共存?为什么Foo方法的定义不会覆盖模块? 解决方法
module Foo
  def self.bar
    "Module.bar"
  end
end

def Foo
  "main.Foo"
end

puts Foo # Foo
puts Foo.bar # Module.bar
puts Foo() # main.Foo
puts Foo.class # Module

为什么模块Foo和方法Foo可以在同一名称空间中共存?为什么Foo方法的定义不会覆盖模块?

解决方法

它们不存在于同一名称空间中.常量和方法位于不同的命名空间中.这就是他们共存的方式.语言在常量命名空间中查找,除非你使用方法调用parens,它明确地说“这应该是一个方法”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读