Project1

标题: 脚本出现问题,麻烦翻译一下 [打印本页]

作者: 宇凌风    时间: 2009-8-11 10:21
标题: 脚本出现问题,麻烦翻译一下
错误类型为TypeError
no implicit conversion from nil to integer

出错行附近的脚本为:
  #--------------------------------------------------------------------------
  # ● 获取基本物理防御
  #--------------------------------------------------------------------------
  def base_pdef
    pdef1 = old_pdef
    slot1 = $data_armors[@slot1]
    slot2 = $data_armors[@slot2]
    slot3 = $data_armors[@slot3]
    slot4 = $data_armors[@slot4]
    slot5 = $data_armors[@slot1]
    slot6 = $data_armors[@slot2]
    slot7 = $data_armors[@slot3]
    pdef2 = slot1 != nil ? slot1.pdef : 0
    pdef3 = slot2 != nil ? slot2.pdef : 0
    pdef4 = slot3 != nil ? slot3.pdef : 0
    pdef5 = slot4 != nil ? slot4.pdef : 0
    pdef6 = slot5 != nil ? slot5.pdef : 0
    pdef7 = slot6 != nil ? slot6.pdef : 0
    pdef8 = slot7 != nil ? slot7.pdef : 0
    return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + pdef6 + pdef7 + pdef8
  end
  alias old_mdef base_mdef

出错的一行是slot1 = $data_armors[@slot1]
这种问题可能是哪里出错?应该从哪里入手解决?
作者: №独孤剑→    时间: 2009-8-11 10:33
你使用了错误的类型
{别找我,潜水去}
作者: 紫苏    时间: 2009-8-11 11:24
当你在把变量用在数组索引取值时,Ruby 会默认你这个变量是或者可以隐式转换为整数
这里 @slot1 为 nil,但是“nil 与 Integer 之间没有隐式转换”(所谓隐式转换就是不需要你强制去转换数据类型,编译器会自动转换),所以就发生异常了~

你的下手点就是检查 @slot1、@slot2 等等这些变量,这些变量都应该在对象实例化的时候或者调用 base_pdef 之前有一个初始值~




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