【问题标题】:Adding object to initialized @array将对象添加到初始化的@array
【发布时间】:2015-11-15 14:10:00
【问题描述】:

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

【问题讨论】:

  • 您可以将代码粘贴到您的问题中,并使用代码格式将它们突出显示为代码
  • 我投票决定将此问题作为离题结束,因为寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包含所需的行为, 具体问题或错误最短的代码在问题本身中重现它。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: arrays ruby push instance


【解决方案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

【讨论】:

  • omgg 非常感谢!我真的在上周五上过关于块的讲座并且已经忘记了x(但是谢谢:)另外,除非我认为语法非常有用,所以很高兴知道我可以将它放在最后而不是行的开头
【解决方案2】:

在第 23 行你实际上将一个块传递给 nil?方法。这个块 {@countries

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多