Project1
标题:
区域变量 和实例变量 一直搞不懂
[打印本页]
作者:
z2z4
时间:
2013-9-3 12:50
标题:
区域变量 和实例变量 一直搞不懂
cheak_note = @note
cheak_note 这个变量 只能在 当前方法里用吗
@note 未实例的 是不是也只能在 当前方法里用吗
不然下面的 都一样 不是碰在一起了
如果 attr_accessor 就是 实例变量 如果未 attr_accessor 又是什么变量
对于这个 @note 变量 一直搞不懂 @note 这个变量 随时可以生产
def weight
return 0 unless @note
cheak_note = @note
weight = 0
while cheak_note do
cheak_note.match(/<装备重量\s?(\d+)\s?>/)
weight += $1.to_i if $1
cheak_note = $'
end
return weight
end
#--------------------------------------------------------------------------
# ● 最大重量補正の定義(追加定義)
#--------------------------------------------------------------------------
def weight_revise
return 0 unless @note
cheak_note = @note
weight_revise = 0
while cheak_note do
cheak_note.match(/<最大重量補正\s?(\d+)\s?>/)
weight_revise += $1.to_i if $1
cheak_note = $'
end
return weight_revise
end
复制代码
作者:
喵呜喵5
时间:
2013-9-3 13:05
本帖最后由 喵呜喵5 于 2013-9-3 13:09 编辑
attr_accessor:abc其实是个简写,等同于:
def abc
return @abc
end
#通过abc这个方法读取abc的值
def abc=(abc)
@abc = abc
end
#通过abc=这个方法修改abc的值
attr_accessor的作用就是允许其他地方修改和读取某个实例中的变量(test.new.abc > @abc
test.new.abc=123 > @abc=123),没有定义对应的方法的话只能在该实例内部使用这个abc变量
(Ruby自学者,如果解释有错请楼下高人纠正)
作者:
z2z4
时间:
2013-9-3 13:14
喵呜喵5 发表于 2013-9-3 13:05
attr_accessor:abc其实是个简写,等同于:
def abc
def abc()
end
一般这个括号里 有参数 又是什么意思
作者:
fangyc
时间:
2013-9-3 13:15
实例变量是类的所有的,在本类中都可以访问,也可以像2楼说的公开接口供外部访问。但这个变量永远属于该类所有。
加了@变量就是实例变量
作者:
喵呜喵5
时间:
2013-9-3 13:23
z2z4 发表于 2013-9-3 13:14
def abc()
end
只能在类中调用意思就是,如果某个角色的HP没有定义为attr,然后我想在战斗界面中获取该角色的HP,对不起,报错,因为该角色的HP属性是实例变量,禁止你从外部访问,你说的括号里的参数……
求面积 > “电脑,帮我算一下圆的面积,圆的半径什么的你自己去猜哈”
求面积(3) > “电脑,帮我算一下圆的面积,圆的半径是3”
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1