Project1
标题:
增加新变量
[打印本页]
作者:
majx0404
时间:
2010-8-11 22:52
标题:
增加新变量
本帖最后由 majx0404 于 2010-8-12 20:37 编辑
如题,我想给武器增加一个新变量
而且希望它记录在$data_weapon里面
应该怎么做?
我直接打
module RPG
class Weapon
def initialize
@新变量 = []
end
attr_accessor :新变量
end
end
有办法加进去吗??
作者:
六祈
时间:
2010-8-12 07:21
回复
majx0404
的帖子
你好大的胆子呀,直接把默认的initialize替换掉了
应该先alias的
alias :origin_initialize :initialize
def initialize
origin_initialize
@新变量 = []
end
复制代码
作者:
bbaugle
时间:
2010-8-12 07:30
不懂alias的路过.....
我不明白用alias 后面:的后面为什么那么长.........
作者:
majx0404
时间:
2010-8-12 08:07
都忘记这件事了,谢谢提醒@@
帮解说一下 Alias是用新方法取代原方法
alias : origin_initialize :initialize
以后initialize就被original initialize取代了
为什么这样做?因为同一个类中有相同方法的话
旧的会被新的盖掉,所以先把旧的用取代法改名,再重新定义一个initialize
def initialize
xxxxxx
xxxxxx
origin_initialize
end
中间把刚刚的initialize叫回来,就相当于在原本的def initialize上面加上两行xxxxxx了
作者:
majx0404
时间:
2010-8-12 09:25
还是有个问题….这样定义下的叫出的值都是nil
例如 $data_weapons[@weapon_id].hit_plus == nil
不是undefinded method 是nil
不晓得怎么回事 = =
作者:
八云紫
时间:
2010-8-12 09:27
回复
majx0404
的帖子
RPG 模块不会执行 initialize 方法,因为它是从文件中加载实例的,而不是生成的。
需要另外的函数来手动调用完成初始化。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1