【发布时间】:2020-01-18 12:07:04
【问题描述】:
我确定这是一个愚蠢的问题,但我找不到答案。所以,我有一个数组,我想在每个元素中添加“}”,所以我使用了 map。
zones.map {
|z| z += '}'
}
但它不起作用。当我返回 zone 变量时,没有任何改变。所以,我正在使用简单的数组进行测试,我发现在 irb 中这是可行的,但在程序中却不行?
所以我在 irb 中做了:
["1", "2", "3"].map { |z| z += "}" }
=> ["1}", "2}", "3}"]
然后在我的代码中相同,当它相同时它不起作用:
["1", "2", "3"].map {
|num| num+= "}"
}
这会返回
["1", "2", "3"]
相同的代码如何在 irb 上运行,但在我的代码上却不行?我真的不明白这一点,它的代码相同。除此之外,似乎 .map 不适用于我的代码中的任何内容。
【问题讨论】:
-
您能提供一个代码示例吗?在您的代码中,如果您添加一行“puts $yourvariable.class”,输出是什么?是数组吗?
-
使用
map!而不是map来改变zones -
我怀疑它与您拥有的代码相同。你能展示你使用它的完整上下文吗?请记住
.map不会改变原始数组,如果它返回一个副本并保持原始数组不变。如果您打算改变数组,请查看Array#map!。 -
@AbM 问题不在于他不能改变他的数组,map 应该返回他的数组并连接
}而不必改变原始数组。实际上@JuanMartinez 我看不出你的代码为什么不起作用。您是否在特定环境中使用它? -
好吧,我知道我做错了什么。首先,我在我的代码中调用了另一个变量,其中包含 ["1", "2", "3"],所以即使我正在更改某些内容,我也在打印另一个。其次,我不知道地图!大声笑我认为地图有相同的行为。一切都解决了,非常感谢。编辑:我看不到投票答案或将答案标记为正确答案的方法。
标签: ruby-on-rails arrays ruby dictionary