赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 7 |
经验 | 3973 |
最后登录 | 2024-10-15 |
在线时间 | 115 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 677
- 在线时间
- 115 小时
- 注册时间
- 2012-9-30
- 帖子
- 102
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
实变量属于个体对象的变量称为实变量。名称以 @ 开头的变量,自动作为实变量使用。局部变量只有在 def ~ end 等结构内部使用时才有效,然而使用实变量的话,只要其对象存在,变量的值就会被保存。实变量一般作为对象的属性来使用。
class Person
def name
return @name
end
def name=(name)
@name = name
end
def hello
print "我是" + @name + ""
end
end
alex = Person.new
alex.name = "艾力克斯"
alex.hello # => 我是艾力克斯
上面的示例是先准备 @name 实变量,使用 name、name= 方法把对象附加上 @name 实变量作为属性。像这样的方法称为附加属性。附加属性也能更简单的像下面那样编写。
attr_accessor :name
这样编写是,自动定义与 : 符号右侧名称相同的实变量对应属性的取得和注解方法。上例中是生成 @name 实变量并附加成为属性。总之,
def name
return @name
end
def name=(name)
@name = name
end
是与上面相同的意思。
在预置脚本中 attr_accessor 应用得很多。但在只定义属性的取得方法的情况下,一般使用 attr_reader 代替 attr_accessor。
上面这段是F1帮助里面的原文但是我不太理解 @name = name这样定义属性是什么意思?有什么意义! |
|