加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 了解attr_accessor类方法的自我

发布时间:2020-12-16 22:10:38 所属栏目:百科 来源:网络整理
导读:class Test class self attr_accessor :some def set_some puts self.inspect some = 'some_data' end def get_some puts self.inspect some end endendTest.set_some = Testputs Test.get_some.inspect = Test nil 在上面我可以找到self作为Test本身但不返
class Test
  class << self
    attr_accessor :some

    def set_some
      puts self.inspect
      some = 'some_data'
    end
    def get_some
      puts self.inspect
      some
    end
  end
end

Test.set_some => Test
puts Test.get_some.inspect => Test nil

在上面我可以找到self作为Test本身但不返回some_data作为输出.

但是,当我按以下方式修改时,它返回预期的输出

class Test
  class << self
    attr_accessor :some

    def set_some
      puts self.inspect
      self.some = 'some_data'
    end
    def get_some
      puts self.inspect
      self.some
    end
  end
end

Test.set_some => Test
puts Test.get_some.inspect => Test some_data

有什么区别?

编辑

现在在第一个例子中,如果我设置为获取某些方法

Test.some = 'new_data'
puts Test.some.inspect #=> new_data
Test.set_some
puts Test.get_some.inspect => new_data

现在它让我更加困惑.

解决方法

some =:foo让ruby认为它应该创建一个名为some的新局部变量.如果要调用某些=(),则必须使用显式接收器 – 如self.some =:foo.我曾经打过赌注…: – /

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读