-1

我知道self是方法调用的接收者。但我不知道self方法定义中是否没有。

代码示例:

class One
  def kk
    "kk"
  end
  def self.kkk
    "kkk"
  end
end

puts One.new.kk
puts One.kkk

为什么我需要对used like使用new方法?OneOne.new.kk

4

2 回答 2

1

self.kkk这里定义了一个类方法One。如您所知,self是接收器。在这里的上下文中,它是One类。

One.new返回一个类的实例Onekk是仅由实例调用的实例方法。

于 2012-11-21T08:30:00.450 回答
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,那太无聊了!^_^

于 2013-10-22T09:43:52.367 回答