【问题标题】:Why doesn't this methods allow me to add to an array?为什么这种方法不允许我添加到数组中?
【发布时间】:2016-11-10 20:33:06
【问题描述】:

我不明白为什么我下面的代码不起作用有人可以帮我吗?我正在尝试创建一种将项目添加到数组末尾的方法。我认为我的问题在于我试图访问局部变量的最后一行代码......谢谢!

def add_to_array(name)
  array = []
  array << name
end

add_to_array("Rob")
add_to_array("Jack")

p array

【问题讨论】:

  • 您在每次调用该方法时用一个新数组覆盖array。此外,array 是一个局部变量,在方法范围之外不可用。
  • 那么我的解决方案是什么?我需要将 array = [] 放在方法之外吗?我将如何打印数组?

标签: arrays ruby push


【解决方案1】:

问题是每次调用add_to_array 方法时都会创建一个新数组。
除此之外,该数组是一个局部变量,其作用域仅限于add_to_array 生命周期。

尝试以下方法:

def add_to_array(array, name)
  array << name
end

array = []
add_to_array(array, "Rob")
add_to_array(array, "Jack")
p array

【讨论】:

  • 太棒了。谢谢你。是否有可能以任何方式仅使用一个参数来创建它?
  • 如果arrayobject的一个属性,那么你可以调用object.add_to_array("Rob")
  • @RobMatthews 要做到这一点,add_to_array 变量必须能够看到array 变量。这可以通过某些方式完成。其中之一是声明array,并在其前面加上@,如下所示:@array = []。我刚刚用可能的解决方案创建了a gist。希望有用=)
【解决方案2】:

有什么原因不能使用.push?这是 ruby​​ 中 Arrays 的默认方法

https://ruby-doc.org/core-2.2.0/Array.html#method-i-push

array = Array.new
=> []

name = "Rob"
other_name = "Jack"
yet_another_name = "Jeff"

array.push(name)
=> ["Rob"]
array.push(other_name, yet_another_name)
=> ["Rob", "Jack", "Jeff]

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2023-03-31
    • 1970-01-01
    • 2022-01-19
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多