Tag: 类变量

在Ruby中,为什么在启动irb之后,foo.nil? 说未定义的错误,@ foo.nil? 给出“真实”和@@ wah.nil? 再次出错?

在Ruby 1.8.7和1.9.2中也是如此: $ irb ruby-1.8.7-p302 > foo.nil? NameError: undefined local variable or method `foo’ for # from (irb):1 ruby-1.8.7-p302 > @bar.nil? => true ruby-1.8.7-p302 > @@wah.nil? NameError: uninitialized class variable @@wah in Object from (irb):3 为什么实例变量的处理方式与局部变量和类变量不同?

Ruby中的类变量

我在本教程中遇到了以下示例: class Song @@plays = 0 def initialize(name, artist, duration) @name = name @artist = artist @duration = duration @plays = 0 end def play @plays += 1 @@plays += 1 “This song: #@plays plays. Total #@@plays plays.” end end s1 = Song.new(“Song1”, “Artist1”, 234) # test songs s2 = Song.new(“Song2”, “Artist2”, 345) puts s1.play […]

Ruby类变量

ruby类实例让我很头疼。 鉴于此,我明白了…… class Foo @var = ‘bar’ end … @var是创建的类实例上的变量。 但是如何创建子类可覆盖的类变量? 这是我在Python中做的一个例子: class Fish: var = ‘fish’ def v(self): return self.var class Trout(Fish): var = ‘trout’ class Salmon(Fish): var = ‘salmon’ print Trout().v() print Salmon().v() 哪个输出: trout salmon 我如何在ruby中做同样的事情?