|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-08-07
没必要和其他的语言做类比(不是对比),钻牛角尖。ruby 中,一般 self 会使用在两个地方,方法体内,方法签名(方法定义)
class A
def self.info # 这的 self 指向 A,类型为 Class,也就是说 info 是 A 的类方法,A.info
puts "aaaaaa"
end
def self.call_info # 同样,call_info 也是类方法,A.call_info
puts self.info # 方法体内的 self,因为当前上下文是类方法,所以这里的 self 自然也指向 A,这里可以写作 A.info, info
end
def my_info # 这里定义的是一个实例方法,A.new.info
puts "my info"
puts self.info # 当前环境是实例对象,self 指向当前的A的实例对象,但是我们没有定义过实例方法 `info',之前的 info 是类方法,所以这里会抛出 NoMethodError 异常
end
学一门语言,在掌握到80%之前,没必要去和其他语言做类比(我说的是类比,比如楼主所说的“ruby里xxx相当于java的xxx”,对比还是可以的,对比两种语言对同一个问题的处理方式,优缺点)。类比只会模糊自己对概念的认识 |
|
| 返回顶楼 | |


