赞 | 0 |
VIP | 5 |
好人卡 | 14 |
积分 | 15 |
经验 | 110639 |
最后登录 | 2015-10-15 |
在线时间 | 1157 小时 |
Lv3.寻梦者 小柯的徒弟
- 梦石
- 0
- 星屑
- 1535
- 在线时间
- 1157 小时
- 注册时间
- 2008-5-24
- 帖子
- 3085
|
以下引用消隐于2008-12-28 15:56:04的发言:
那么怎么给一个类的实例设置属性啊?
def name
return @name
end
def name=(name)
@name = name
end
如上,第一个方法为"取得@name",好比你在类中某处写上
n = name 的效果和 n = @name 一样
n = name 就是取得name方法的返回值,也就是取得@name的值
第二个方法为"设置@name",在某处写上
name=999
p @name
你会发现@name为999,其实name=999并不是变量,而是方法,附:参数可以不带括号的来使用
Q:为何需定义这些方法
A:因为在外部不可以像类中可以直接@name = 546 或者取得类中的@name。所以,这些方法定义后便可以顺意的拿到类中变量
attr_accessor :@name
如上就可以直接定义了上面的那两个方法
attr_reader :@name # 只定义了第一个
attr_writer :@name # 只定义了第二个
以下引用消隐于2008-12-28 15:02:53的发言:
明明只定义了一次@name,请问这无数个@name是哪里来的?是什么时候定义的?
说白了就是定义了多个类
Game_Actors中有一句
====
def [](actor_id)
if actor_id > 999 or $data_actors[actor_id] == nil # 这个循环可以无视
return nil # 只是用于避免错误发生
end # 只要你不乱改数据库文件= =
if @data[actor_id] == nil # 如果@data为nil,也就是说还没有这个角色的类
@data[actor_id] = Game_Actor.new(actor_id) # 生成类,生成时会自动代入角色数据到变量中
end
return @data[actor_id] # 最后,返回@data中,属于actor_id编号角色的类
end # 好比返回Game_Actor.new(actor_id)
end # 但是,数据是一直保留的,类需要一直保存,所以才要一直保留在@data中
==== |
|