论坛首页 Ruby版 ruby

ruby 中的self 疑问?

浏览 1433 次
精华帖 (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”,对比还是可以的,对比两种语言对同一个问题的处理方式,优缺点)。类比只会模糊自己对概念的认识
   
0 请登录后投票
论坛首页 Ruby版 ruby

跳转论坛:
JavaEye推荐