什么时候Ruby自我引用了Object,什么时候自我引用Ruby类?用例子解释会很棒。没有理解这一点。
答案 0 :(得分:5)
类实际上是对象本身。假设我有一个类Person
,这实际上是Class
的一个实例。因此,您可以自我引用文章的实例,或者您可以自我引用类的实例Article
。
在最简单的例子中,我可以想到:
class Person
def initialize
p "Info about Person Instance"
p self
p self.class
end
p "Info about Person Class"
p self
p self.class
end
person = Person.new
打印:
"Info about Person Class"
Person
Class
"Info about Person Instance"
#<Person:0x0000010086cf58>
Person
要详细了解自我,I highly recommend read this.
答案 1 :(得分:3)
我可以尝试自己解释一下,但我认为Yehuda Katz比我做得更好:
答案 2 :(得分:2)
我的理解是
self
指的是类/模块。 self
引用实例。例如,
class A
def method1
self # => instance of A
end
def self.method2
self # => class A
endu
def A.method3
self # => class A
end
end
class << A
def method4
self # => class A
end
end
module B
module_function
def method5
self # => module B
end
end
例外情况是instance_eval
,instance_exec
改变self
接收者。