class Foo
def self.one; 1 end
class << self
def two; 2 end
end
end
puts Foo.singleton_methods.inspect # => ["two","one"]
我被告知上述方法“一”和“二”在概念上是不同的,但我看不到如何.
它们都是单一的方法 – 概念和应用有什么区别?@H_502_6@
在申请中,没有区别.在概念上,差异是微妙的,但在第一种情况下,您正在当前上下文中运行,并在另一个类实例(实际上是其本体类中的实例
方法)中定义
方法,而在第二种情况下,您正在输入其他类实例的元类(“Eigenclass”)的上下文,然后定义一个实例
方法.
编辑:@H_502_6@
我应该补充说,选择课程的原因<<自己在某些情况下是... >定义多个类方法时的清除语法.>除了def my_method之外,您可以在特征类上下文中执行其他类型的代码.例如,您可以在该代码块中说attr_accessor:some_attribute.@H_502_6@