将对象添加到初始化的@array

时间:2015-11-15 14:10:01

标签: arrays ruby push instance

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在第23行,你实际上将一个块传递给nil?方法。这个区块{@countries&lt;&lt; country}永远不会被称为方法nil?并不期待一个阻止。

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

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