幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3919|回复: 6

[其他] RUBY 类的实例变量 我想知道他是哪一句让他改变的怎么弄啊

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-7-25 10:59:34 | 显示全部楼层 |阅读模式
就是类的实例变量。。总是莫名其妙的就变了,我也不知道是哪一句让他变的。。。怎么能让这个变量一改变就能 让我知道啊。。比如print "XXx"之类的
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-7-25 20:50:36 | 显示全部楼层
不要直接对变量赋值呗,像这样:
  1. class Foo
  2.   attr_reader :val
  3.   def val=(v)
  4.     puts "#@val => #{v}"
  5.     @val = v
  6.   end
  7. end
  8. f = Foo.new
  9. f.val = 2
  10. f.val = 3
  11. puts f.val
复制代码
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-7-26 13:07:31 | 显示全部楼层
要是你要显示具体的调用栈信息的话,还可以用Kernel#caller方法:
  1. class Foo
  2.   attr_reader :val
  3.   def val=(v)
  4.     puts "@val: #@val => #{v}"
  5.     puts caller
  6.     @val = v
  7.   end
  8. end
  9. class Bar
  10.   def initialize
  11.     @foo = Foo.new
  12.   end
  13.   
  14.   def test1
  15.     @foo.val = 1
  16.   end
  17.   
  18.   def test2
  19.     @foo.val = 2
  20.   end
  21. end
  22. b = Bar.new
  23. b.test1
  24. b.test2
复制代码
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-7-26 21:04:33 | 显示全部楼层
十分感谢   

我怎么就想不到。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-7-26 23:10:45 | 显示全部楼层
呵呵,这个用多了就自然会知道的了 =v=
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2009-8-19 08:52:55 | 显示全部楼层
= =+ 水水只知道C++下面得用 SetVal和GetVal

好像C#这类语言可以直接对成员变量上赋予更细致的权限吧?
Style-C
回复 支持 反对

使用道具 举报

24

主题

117

帖子

1274

积分

⑥精研

积分
1274
QQ
发表于 2011-5-19 08:37:23 | 显示全部楼层

回 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中的“属性”。
Tamashii是啥意思? 魂! ======================= 我真是败给C++的面向对象了啊……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-28 20:33 , Processed in 0.021225 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表