【发布时间】:2014-02-20 15:57:35
【问题描述】:
我正在制作一个约会模拟器。我需要做的第一件事就是跟踪角色对彼此的感受。在这个模拟游戏中,任何人都可以和其他任何人约会,并且有两个关系变量(一个代表爱情,一个代表友谊)。
所以我认为最简单的方法是让每个角色都有一个单独的班级来记录他们对其他人的感受。下面是一个这样的示例类。我还认为,跟踪应在何处添加点的最简单方法是给每个字符一个指向其自己变量的哈希,然后使用交换函数与他们正在与之交谈的人交换目标。
但是,我收到一条错误消息。
class HRelatStatus
def initialize
{@target=> @hrelat}
@krelat =[10, 10]
@arelat =[9, 4]
@srelat =[13, 11]
@jrelat =[12, 1]
@brelat =[5, 5]
@hrelat=[0, 0]
end
def dataaccess
attr_accessor :target, :krelat, :arelat, :srelat, :jrelat, :brelat, :hrelat
end
def makehappy
@target[0] = @target[0]+1
end
end
hfeels=HRelatStatus.new
puts @krelat.class
puts @krelat[1]
hfeels.makehappy
puts @target[0]
当我尝试运行它时,@krelat 以 Nil 类的形式返回。当我尝试运行 makehappy 方法(或任何方法,真的)时,我收到错误消息 undefined method '[]' for nil class。
如何阻止我的实例变量成为 nil 类?我怎样才能成功地制作将添加到特定字符数组中的一个变量的方法?有没有人对我如何指定目标对象有更好的想法?
【问题讨论】:
-
这个问题似乎离题了,因为它显示了如此糟糕的代码结构,以至于答案对其他人几乎没有用处。
标签: ruby arrays class undefined null