【问题标题】:.map on array doesnt work (Ruby on rails)数组上的 .map 不起作用(Ruby on rails)
【发布时间】: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


【解决方案1】:

正如上面 cmets 中所解释的,.map 不会更改输入变量,它只是显示结果会是什么。

正确的选项是 .map!

【讨论】:

  • map 不会改变数组,但仍然可以改变元素。例如,z << '}'。当然,在这种情况下,使用map 毫无意义。可以使用.each。
猜你喜欢
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多