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的
  1. alias :origin_initialize :initialize
  2. def initialize
  3. origin_initialize
  4. @新变量 = []
  5. 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