设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2259|回复: 16
打印 上一主题 下一主题

attr_reader和attr_accessor的区别

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

七仙女

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-15
帖子
559
跳转到指定楼层
1
发表于 2009-3-10 06:28:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

UltraDevil

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-3-9
帖子
262
2
发表于 2009-3-10 06:32:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

七仙女

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-15
帖子
559
3
 楼主| 发表于 2009-3-10 06:59:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

4
发表于 2009-3-10 07:01:08 | 只看该作者
class A
  def name=(val)
    @name = val
  end
end

a = A.new;

a.name = 3;  # 这句相当于是 a.name=(3)

系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
版主对此帖的认可:『感谢详细的回答』,积分『+200』。

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

七仙女

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-15
帖子
559
5
 楼主| 发表于 2009-3-10 07:05:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

6
发表于 2009-3-10 07:08:13 | 只看该作者
@name 不可读取~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

七仙女

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-15
帖子
559
7
 楼主| 发表于 2009-3-10 15:00:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
8
发表于 2009-3-10 18:16:20 | 只看该作者
我也有问题还不大懂 = =

class A
  
def name=(r)
    @name = r
  $g=@name

end
end


p $g    # nil 是因为确实没有
a = A.new;
a.name = 3
p $g    # 3 name被赋值为3
p @name #nil 是因为@name 不能被读取 但其实已经改变?
class A
def name(r)
  @name = r
  $g=@name
end
end
p $g    # 3 name赋值为3 没有变
a = A.new;
a.name(8)
p $g    # 8 被重新赋值为8
exit

还有就是def name=(r)
= 为什么要紧挨着name ?
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2008-5-12
帖子
129
9
发表于 2009-3-10 18:36:33 | 只看该作者
作用域啊作用域啊!
$ 的作用域是「全系統」
@ 的作用域是「該實例內部」
def name=(r) 与 def name(r) 有什么区别  

我可以說祗是名字不同嗎……
實際上 「=」 也是方法名字的一部分啊
版主对此帖的认可:『感谢详细的回答』,积分『+200』。
你是個好人>////<
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
10
发表于 2009-3-10 18:48:02 | 只看该作者
@变数名  
该类变数里面的东西 生存时间仅仅只有在类里面,
这类的变数能在某一个calss下在不同的方法(def 方法名)間下运作,内容不会消失
而不是不能读取
class A
def name=(val)
  @name = val
end
end
a = A.new
a.name = 3
p @name # 在class外 所以显示出来为nil
def name=(val)
  @name = val
  p @name
end
end
a = A.new
a.name = 3
# 在class內 所以每次调用都会显示出来 而不是nill


$变数名
又名全域变数
该类变数里面的东西 生存时间很长
跨类跨方法里面的内容都不会消失

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-17 01:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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