为什么在包含之后将实例方法称为模块方法?

好的

在模块上定义的实例方法:

module A
  def foo; :bar end
end

当包含该模块时,似乎可以将其称为该模块的模块方法:

include A
A.foo # => :bar

这是为什么?

肖恩·巴拉斯特拉奇(Shawn Balestracci)

您正在将A包含到对象中。

module A
  def self.included(base)
    puts base.inspect #Object
  end

  def foo
    :bar
  end
end

include A

puts A.foo # :bar
puts 2.foo # :bar

#puts BasicObject.new.foo   #this will fail

还要注意,顶层对象main是特殊的;它既是Object的实例,又是Object的一种委托者。

参见http://banisterfiend.wordpress.com/2010/11/23/what-is-the-ruby-top-level/

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么通过Interface.super称为超接口的方法?

为什么称为“方法隐藏”?

为什么将NVL函数称为“ NVL”?

为什么在startActivityForResult之后调用oncreate方法?

为什么将功能咖喱称为咖喱?

为什么将ViewBag称为ViewBag?

为什么Next()方法称为next?

为什么红宝石不允许在类中访问方法,除非以模块名称为前缀

为什么将Counter的__init__方法称为描述符?

为什么将cookie称为“ cookies”?

将布尔实例方法称为“作用域”

为什么实例方法在Python 3中被称为类方法?

为什么在线程模块中将.join()方法称为.join()?

为什么在弱引用对象实例(如文本视图)之后使用get()方法?

如果C#规范将Type类称为简单类型,为什么Type类具有名为IsPrimitive()的方法?

为什么将引用称为“共享”?

Algorthims:分层数据-此方法称为什么?

在React中,为什么将render方法绑定到组件实例而不是自定义方法?

为什么将Rust的.expect()称为Expect?

为什么在Java中将函数称为方法?

为什么将模块数学称为“内置”?

为什么将proc称为文件系统?

为什么“没人”被称为“ root之后最特权的用户”?

为什么类外部包含的模块将实例方法添加到类的对象

为什么我应该调用 BERT 模块实例而不是 forward 方法?

这种惰性执行方法(使用 lambda)又称为什么?

为什么包含影响我所有实例对象的模块?

为什么有些方法被称为自变量?

为什么我可以将类设置为 null 并且之后仍然从中调用方法?