查看: 10553|回复: 15

[已经解决] 请问下Nomethoderror报错怎么解决

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2019-10-17 22:56:38 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 taeckle 于 2019-10-17 23:04 编辑

提示内容为:

“undefined method state?” for nil: Nilclass



请问下这个报错该怎么解决啊?
nomethodeerror.PNG
梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-17 23:09:33 | 显示全部楼层
发402行前后的脚本..
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-10-18 07:11:04 | 显示全部楼层
soulsaga 发表于 2019-10-17 23:09
发402行前后的脚本..

先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的一个方法里引用这个@xyz的赋值该怎么引用啊?
回复

使用道具 举报

梦石
0
星屑
15041
在线时间
2230 小时
注册时间
2019-1-24
回帖
964

R考场第七期纪念奖

发表于 2019-10-18 08:07:13 | 显示全部楼层
我打个比方吧,比如你在Sprite_Battler里面会调用,在Scene_Battle里面某个位置想调用,你把问题关键点写出来,估计能有人帮你解决的。
你这种举例有点笼统了,你说呢。

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-18 10:04:42 | 显示全部楼层
taeckle 发表于 2019-10-18 07:11
先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的 ...

class A
  def abc
    a=222
    return a
  end
end

在Class B
这样写就可以调用Class A的方法
@kkk=A.new
    p @kkk.abc

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 大神威武,无坚不摧!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3242
在线时间
205 小时
注册时间
2019-9-16
回帖
195
发表于 2019-10-18 15:59:23 | 显示全部楼层
本帖最后由 寒凌天 于 2019-10-18 16:27 编辑
taeckle 发表于 2019-10-18 07:11
先提个问题:
在类Class A 里的一个方法里(比如这个方法叫abc)“@xyz"被赋予一个值,我想在Class B 里的 ...


在@xyz被赋值时,下面加一行代码$game_variables[9527]=@xyz
然后在Class B里,调用$game_variables[9527]的值就行了

这个9527,其实就是代表着变量9527,这个数字你也可以换成未使用的变量,由于这变量本身是全局性的,所以你在哪里调用都可以。

编辑补充说明一下,我的方法和5楼的方法,是两种截然不同的代码,针对的情况也是截然不同的。

5楼的代码意思是重新声明一个类,并按照方法返回值。
而我的代码也是是,读取上次执行Class A的abc命令时,所产生的值。

不过像你这种获取某个值的方法,Class A的abc多数情况是有参数的,参数不同,返回结果一般也不同。是用我的代码“读取上次结果”,还是用5楼说的那种在Class B中重新执行一次Class A的abc方法,你看着选吧。
两种代码没有谁对谁错之分,也没有哪个更好一说,因为应对的是完全两种不同的情况。因为你之前没说清楚你具体想用在哪种情况,所以你看着选吧

点评

有道理,多谢了!  发表于 2019-10-18 21:07

评分

参与人数 2星屑 +70 赞 +1 收起 理由
RyanBern + 70 认可答案
taeckle + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-10-18 21:47:16 | 显示全部楼层
soulsaga 发表于 2019-10-18 10:04
class A
  def abc
    a=222

大神请问下这两句话:
if ($game_variables[100]+$game_variables[101]) >= 9999

end
和
if $game_variables[100]+$game_variables[101] >= 9999

end
是不是一样的?加不加括号无所谓?

点评

OK!明白了!  发表于 2019-10-19 00:40
括号多用于有乘除法的运算时,和上学的时候学的普通数学是一样的,先算括号内的。你距离这个例子加不加括号都一样,因为没有乘除法  发表于 2019-10-18 23:57
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-18 22:29:54 | 显示全部楼层
taeckle 发表于 2019-10-18 21:47
大神请问下这两句话:
if ($game_variables[100]+$game_variables[101]) >= 9999


加括号用来优先计算..不需要就不用加..

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 Ok!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-10-19 09:41:49 | 显示全部楼层
soulsaga 发表于 2019-10-18 22:29
加括号用来优先计算..不需要就不用加..

大神你看这句:
     if @active_battler.id == 229 or @active_battler.id == 231  or @active_battler.id == 985
     end

咱要是用"include"可不可以这么写:
if [229,231,985].include?(@active_battler.id)
end

这么写语法对嘛?
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-19 10:38:17 | 显示全部楼层
taeckle 发表于 2019-10-19 09:41
大神你看这句:
     if @active_battler.id == 229 or @active_battler.id == 231  or @active_battler. ...

可以这么写...

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 这居然是我两年前的问题...

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部