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

Project1

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

[已经解决] 区域变量 和实例变量 一直搞不懂

[复制链接]

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
跳转到指定楼层
1
发表于 2013-9-3 12:50:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
         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
复制代码

点评

这些是Ruby语言的知识,请去学Ruby  发表于 2013-9-3 13:28
这些是Ruby语言的知识,请去学Ruby  发表于 2013-9-3 13:28
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2013-9-3 13:05:08 手机端发表。 | 只看该作者
本帖最后由 喵呜喵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自学者,如果解释有错请楼下高人纠正)

点评

觉得RM 好复杂 虽然 也懂了不少 一直看不懂 @ 乱七八糟  发表于 2013-9-3 13:15
只能在该实例内部使用这个abc变量 实例内部是什么意思  发表于 2013-9-3 13:12

评分

参与人数 1梦石 +1 收起 理由
熊喵酱 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
3
 楼主| 发表于 2013-9-3 13:14:04 | 只看该作者
喵呜喵5 发表于 2013-9-3 13:05
attr_accessor:abc其实是个简写,等同于:

def abc   

def abc()   
end

一般这个括号里 有参数 又是什么意思
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
帖子
154
4
发表于 2013-9-3 13:15:33 手机端发表。 | 只看该作者
实例变量是类的所有的,在本类中都可以访问,也可以像2楼说的公开接口供外部访问。但这个变量永远属于该类所有。
加了@变量就是实例变量
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

5
发表于 2013-9-3 13:23:24 手机端发表。 | 只看该作者
z2z4 发表于 2013-9-3 13:14
def abc()   
end


只能在类中调用意思就是,如果某个角色的HP没有定义为attr,然后我想在战斗界面中获取该角色的HP,对不起,报错,因为该角色的HP属性是实例变量,禁止你从外部访问,你说的括号里的参数……
求面积 > “电脑,帮我算一下圆的面积,圆的半径什么的你自己去猜哈”
求面积(3) > “电脑,帮我算一下圆的面积,圆的半径是3”
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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