gpt4 book ai didi

ruby - 使用 each 和 map 修改数组索引的范围

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

以下代码:

a = [1,2,3,4,5]
b = a.each.map {|i| i = 0} # or b = a.map {|i| i = 0} does the same thing

使 b = [0, 0, 0, 0, 0] 符合预期

是否有同样简洁的方法来更改 a 的范围? (例如:将 a[2..4] 设置为 0)

我在 irb 中搞砸了,但我的代码只返回修改过的元素

a = [1,2,3,4,5]
b = a[2..4].each.map {|i| i = 0}

使 b = [0, 0, 0],而我试图使 b = [1, 2, 0, 0, 0]

最佳答案

我不太确定你想在这里做什么。

首先:为什么要将 Array 转换为 Enumerator 然后 map Enumerator 而不仅仅是直接映射 Array? IE。你为什么有

b = a.each.map {|i| i = 0 }

不仅仅是

b = a.map {|i| i = 0 }

另外,为什么你要分配给 block 局部变量 i 但实际上从未使用过该变量? IE。你为什么不做

b = a.map {|i| 0 }

当然,现在你根本不用 i ...

b = a.map { 0 }

但是,由于 b 的值实际上与 a 的值完全没有关系,所以您也可以这样做

b = [0] * a.size

同样的问题基本上也适用于您的第二个代码示例。同样,您完全忽略 a 的元素,因此使用map 根本没有任何意义。你可以这样做

(b = a.dup)[2..4] = [0] * 3

或者分解成两个表达式稍微更易读

b = a.dup
b[2..4] = [0] * 3 # or ... = [0, 0, 0]

关于ruby - 使用 each 和 map 修改数组索引的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551012/

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