查看: 2555|回复: 4

[已经解决] "undefined method `+' for nil:NilClass" 是怎么回事?

[复制链接]
梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
回帖
13
发表于 2014-1-1 16:34:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jediman 于 2014-1-1 19:21 编辑

更改代码如下


[pre lang="ruby" line="1"]
  def param(param_id)
#    value = param_base(param_id) + param_plus(param_id)                #原代码
#    value *= param_rate(param_id) * param_buff_rate(param_id)         #原代码
#    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i             #原代码

    value = get_status(param_id) + param_plus(param_id)
    value *= get_status(param_id) * param_buff_rate(param_id)
#    [[value, get_status(param_id)].min, param_min(param_id)].max.to_i
  end
  def get_status(param_id)    #获取全局变量并返回
    get_status = $Game_Bstatus[param_id]   #已初始化
#    msgbox get_status
    return get_status
  end[/pre]

测试时报错:



QQ图片20140101163147.jpg
为什么呢? 求大神指点

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-1-1 17:13:40 | 显示全部楼层
本帖最后由 taroxd 于 2014-1-1 17:23 编辑

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

顺便给个下下策:
[pre lang="ruby" line="1"]class NilClass
  def +(other)
    other
  end
end[/pre]

再来一句题外话,value *= get_status(param_id) * param_buff_rate(param_id) 这句话莫名其妙啊,为什么要再乘一次get_status(param_id) ?
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-1-1 17:17:34 | 显示全部楼层
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
回帖
13
 楼主| 发表于 2014-1-1 19:18:09 | 显示全部楼层
taroxd 发表于 2014-1-1 17:13
get_status = $Game_Bstatus   #已初始化
这一行,对每个param_id都初始化了吗?nil可不算啊,至少也初 ...

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

看到 你说 nil 不可算。。突然见想到参数 param_id 超出数组长度导致回传值为nil
修改数组长度后问题解决~谢谢~
顺便预祝新年快乐!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-12-14
回帖
13
 楼主| 发表于 2014-1-1 19:20:29 | 显示全部楼层
喵呜喵5 发表于 2014-1-1 17:17
在 value =XXXX 前面加一句msgbox get_status(param_id)看看传回去的时候是不是nil?

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部