Project1

标题: 区域变量 和实例变量 一直搞不懂 [打印本页]

作者: z2z4    时间: 2013-9-3 12:50
标题: 区域变量 和实例变量 一直搞不懂
         cheak_note = @note

       cheak_note    这个变量 只能在 当前方法里用吗

    @note  未实例的  是不是也只能在 当前方法里用吗
     
       不然下面的 都一样 不是碰在一起了

     如果 attr_accessor  就是 实例变量   如果未 attr_accessor  又是什么变量

   对于这个 @note   变量 一直搞不懂    @note   这个变量 随时可以生产
  1.   def weight
  2.     return 0 unless @note
  3.     cheak_note = @note
  4.     weight = 0
  5.    
  6.     while cheak_note do
  7.       cheak_note.match(/<装备重量\s?(\d+)\s?>/)
  8.       weight += $1.to_i if $1
  9.       cheak_note = $'
  10.     end
  11.     return weight  
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 最大重量補正の定義(追加定義)
  15.   #--------------------------------------------------------------------------  
  16.   def weight_revise
  17.     return 0 unless @note
  18.     cheak_note = @note
  19.     weight_revise = 0
  20.    
  21.     while cheak_note do
  22.       cheak_note.match(/<最大重量補正\s?(\d+)\s?>/)
  23.       weight_revise += $1.to_i if $1
  24.       cheak_note = $'
  25.     end
  26.     return weight_revise
  27.   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