我知道self
是调用方法的接收者。
但我不知道方法定义中是否没有self
。
代码示例:
class One
def kk
"kk"
end
def self.kkk
"kkk"
end
end
puts One.new.kk
puts One.kkk
为什么我需要使用new
方法One
使用One.new.kk
?
答案 0 :(得分:1)
self.kkk
这里定义了One
的类方法。如您所知,self
是接收者。在这里的上下文中,它是One
类。
并且One.new
返回类One
的实例。 kk
是仅由实例调用的实例方法。
答案 1 :(得分:1)
class Demo2
def self.method1(a)
p a.is_a? Demo2
end
def method2(b)
p b.to_s
end
end
a=Demo2.new
# here, if you type a.... wait for hint, you just can only get method2()
# just because it class self.
a.method2('123')
Demo2.method1(a)
p Demo2 # this is a class
p a # this a class instance
>'123'
>true
>Demo2
>#<Demo2:0x290d768>
我认为这个简单的代码可以让你清楚,我不会和你谈论 OOP ,这太无聊了!^ _ ^