gpt4 book ai didi

arrays - 为什么无法在 Ruby 中使用 each do 循环填充数组?

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:21 25 4
gpt4 key购买 nike

如果我使用一个 each do 循环来填充一个数组,它将保持数组原样(在这种情况下它将是一个大小为 4 的 nil 数组)

array = Array.new(4)
array.each do |i|
i = 5
end

我知道我可以使用 array = Array.new(4) {desired value} 用我想要的值初始化一个数组,但有些情况下我要在不同的值之间进行选择,我我试图了解每个 do 循环是如何工作的。

我目前的做法是用我想要的值填充数组

array = Array.new(4)
array.each_with_index do |val, i|
array[i] = 5
end

最佳答案

解决方案

你需要:

array = Array.new(4) do |i|
5
# or some logic depending on i (the index between 0 and 3)
end

你的代码

array = Array.new(4)

数组现在是一个包含 4 个元素的数组(每次都是 nil)。

array.each 迭代这 4 个元素(仍然是 nil),并将 i 设置为等于 的 block 局部变量无

在这个 block 中,您用 5 覆盖了 i,但是您没有对它做任何事情。在下一次迭代中,i 被设置回 nil5,依此类推...

您不会更改原始数组,您只会更改已设置为等于数组元素的局部变量。

关于arrays - 为什么无法在 Ruby 中使用 each do 循环填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41441398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com