2015-11-15 72 views
-2

我想创建一个Country对象的数组。我已经检查了代码的每一部分,到目前为止,唯一不起作用的是将Country对象实际添加到数组中。
有人能帮我理解为什么
array << object
不起作用?整个代码可以在这里找到http://pastebin.com/jNyJvS3c并且问题部分在第23行。添加对象到初始化@array

+2

你可以粘贴你的代码在你的问题,并使用代码格式化来突出他们作为代码 –

+2

我投票关闭这一问题作为题外话,因为寻求调试帮助的问题(“**为什么不是这个代码工作?”)必须包括所需的行为,*特定的问题或错误*和*在问题本身中重现它*所需的最短代码* *。没有**明确问题陈述**的问题对其他读者没有用处。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

回答

1

在代码country.nil? {@countries << country};中,{...}中的代码被视为块并且未被执行。下面是更正

下面是与修正这些功能提示:

def add_country(country) 
    @countries << country unless country.nil? 
    end 

    def to_s(n) 
    string = "" 
    for i in 0..n do 
     string << @countries[i].to_s unless @countries[i].nil? 
    end 
    return string 
    end 
+0

omgg非常感谢你!我从上个星期五开始讲块,并且已经忘了x(但是谢谢:) 除非语法,我认为这样会非常有用,所以很高兴知道我可以把它放在最后而不是开头线 – Scy

0

在第23行,你实际上是一个块传递到零?方法。这个块{@countries < < country}永远不会被称为方法nil?不期望一个块。

所以正确的方式做你需要的东西:

def add_country(country) 
    @countries << country unless country.nil? 
end