我不明白为什么下面的表达式不能将字符串转换为整数:
[["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
这是因为您使用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)
显然,这取决于您想要什么。