Project1

标题: "undefined method `+' for nil:NilClass" 是怎么回事? [打印本页]

作者: jediman    时间: 2014-1-1 16:34
标题: "undefined method `+' for nil:NilClass" 是怎么回事?
本帖最后由 jediman 于 2014-1-1 19:21 编辑

更改代码如下


RUBY 代码复制
  1. def param(param_id)
  2. #    value = param_base(param_id) + param_plus(param_id)                #原代码
  3. #    value *= param_rate(param_id) * param_buff_rate(param_id)         #原代码
  4. #    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i             #原代码
  5.  
  6.     value = get_status(param_id) + param_plus(param_id)
  7.     value *= get_status(param_id) * param_buff_rate(param_id)
  8. #    [[value, get_status(param_id)].min, param_min(param_id)].max.to_i
  9.   end
  10.   def get_status(param_id)    #获取全局变量并返回
  11.     get_status = $Game_Bstatus[param_id]   #已初始化
  12. #    msgbox get_status
  13.     return get_status
  14.   end


测试时报错:




为什么呢? 求大神指点
作者: taroxd    时间: 2014-1-1 17:13
本帖最后由 taroxd 于 2014-1-1 17:23 编辑

    get_status = $Game_Bstatus[param_id]   #已初始化
这一行,对每个param_id都初始化了吗?nil可不算啊,至少也初始化成0

顺便给个下下策:
RUBY 代码复制
  1. class NilClass
  2.   def +(other)
  3.     other
  4.   end
  5. end


再来一句题外话,value *= get_status(param_id) * param_buff_rate(param_id) 这句话莫名其妙啊,为什么要再乘一次get_status(param_id) ?
作者: 喵呜喵5    时间: 2014-1-1 17:17
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?
作者: jediman    时间: 2014-1-1 19:18
taroxd 发表于 2014-1-1 17:13
get_status = $Game_Bstatus   #已初始化
这一行,对每个param_id都初始化了吗?nil可不算啊,至少也初 ...

最后那句是根据源代码进行修改的,意思应该是增加BUFF的属性值。。至于为什么要再乘一次get_status(param_id)
原因只有一个。。我看错了{:2_274:}。。

看到 你说 nil 不可算。。突然见想到参数 param_id 超出数组长度导致回传值为nil
修改数组长度后问题解决~谢谢~
顺便预祝新年快乐!
作者: jediman    时间: 2014-1-1 19:20
喵呜喵5 发表于 2014-1-1 17:17
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?

发现问题是函数参数超出数组长度导致 回传值为nil
问题已经解决了~
谢谢关注,祝新年快乐




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1