Ruby:将字符串转换为嵌套数组的整数值

bel*_*ros 0 ruby

我不明白为什么下面的表达式不能将字符串转换为整数:

[["1", "2"], ["10", "20"]].each {|sr| sr.map(&:to_i)}
=> [["1", "2"], ["10", "20"]]
Run Code Online (Sandbox Code Playgroud)

因此,我没有得到嵌套的整数数组,而是得到了相同的String值。任何的想法 ?

谢谢。

美国Ruby版本: 2.6.1

Mar*_*pka 5

这是因为您使用each,它会返回原始数组。使用map来代替:

[["1", "2"], ["10", "20"]].map { |sr| sr.map(&:to_i) }
# => [[1, 2], [10, 20]]
Run Code Online (Sandbox Code Playgroud)

您还可以使用map!,它修改数组而不是返回一个新数组,如下所示:

[["1", "2"], ["10", "20"]].each { |sr| sr.map!(&:to_i) }
# => [[1, 2], [10, 20]]
Run Code Online (Sandbox Code Playgroud)

显然,这取决于您想要什么。