class Foo
def self.one; 1 end
class << self
def two; 2 end
end
end
puts Foo.singleton_methods.inspect # => ["two", "one"]
Run Code Online (Sandbox Code Playgroud)
我被告知上面的方法"一"和"两个"在概念上是不同的,但我不知道如何.它们都是单身方法 - 概念和应用的区别是什么?
在申请中,没有区别.在概念上,差异是微妙的,但在第一种情况下,您在当前上下文中操作,并在另一个类实例上定义一个方法(实际上,在其Eigenclass中定义一个实例方法),而在第二种情况下,您正在进入其他类实例的元类("Eigenclass")的上下文,然后定义实例方法.
编辑:
我应该补充说,class << self在某些情况下选择的原因是......
def my_method ....例如,您可以attr_accessor :some_attribute在该代码块中说出来.| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |