RUBY 类的实例变量 我想知道他是哪一句让他改变的怎么弄啊
就是类的实例变量。。总是莫名其妙的就变了,我也不知道是哪一句让他变的。。。怎么能让这个变量一改变就能 让我知道啊。。比如print "XXx"之类的 不要直接对变量赋值呗,像这样:class Foo
attr_reader :val
def val=(v)
puts "#@val => #{v}"
@val = v
end
end
f = Foo.new
f.val = 2
f.val = 3
puts f.val 要是你要显示具体的调用栈信息的话,还可以用Kernel#caller方法:
class Foo
attr_reader :val
def val=(v)
puts "@val: #@val => #{v}"
puts caller
@val = v
end
end
class Bar
def initialize
@foo = Foo.new
end
def test1
@foo.val = 1
end
def test2
@foo.val = 2
end
end
b = Bar.new
b.test1
b.test2 十分感谢
我怎么就想不到。。。 呵呵,这个用多了就自然会知道的了 =v= = =+ 水水只知道C++下面得用 SetVal和GetVal
好像C#这类语言可以直接对成员变量上赋予更细致的权限吧?
回 5楼(lw) 的帖子
C#中变量分为成员(member)和属性(property)。一般来说在C#中成员都是私有(private)的(struct除外),而属性是公有(public)的。
属性不能单独的存在,必须有和属性相对应的成员去存储属性的值。除此之外,属性还可以设置读(get)写(reader)权限。这有点像是ruby中的Symbol
@test
def test
return @test
end
def test=(value)
@test = value
end
这就是ruby中的“属性”。
页:
[1]