将字符串数组转换为 Ruby 中的整数数组
converting an array of strings to an array of integers in Ruby
运行 如下:
print ['1','2','3'].each { |j| j.to_i }
生成输出:
["1", "2", "3"]
我想了解为什么它不生成:
[1,2,3]
谢谢!
在函数完成循环后,对适用对象调用 #each
将 return 该对象,这就是您获取原始数组的原因。
如果您希望根据某种规则修改数组中的值,并且 return 将结果作为新数组,您可以使用 #map
:
arr = ['1', '2', '3']
arr.map {|j| j.to_i}
# => [1, 2, 3]
如果您想直接影响原始数组,可以将上面的内容替换为 #map!
,这会改变原始数组。
希望对您有所帮助!
因为.each
returns一个原始数组。你必须使用 .map
['1','2','3'].map(&:to_i)
=> [1, 2, 3]
各定义:
rb_ary_each(VALUE array)
{
long i;
volatile VALUE ary = array;
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_AREF(ary, i));
}
return ary; # returns original array
}
另一种方式可能是:
print ['1','2','3'].collect(&method(:Integer))
但是请注意,如果您要在生产中使用,这可能会对性能造成不利影响。
运行 如下:
print ['1','2','3'].each { |j| j.to_i }
生成输出:
["1", "2", "3"]
我想了解为什么它不生成:
[1,2,3]
谢谢!
在函数完成循环后,对适用对象调用 #each
将 return 该对象,这就是您获取原始数组的原因。
如果您希望根据某种规则修改数组中的值,并且 return 将结果作为新数组,您可以使用 #map
:
arr = ['1', '2', '3']
arr.map {|j| j.to_i}
# => [1, 2, 3]
如果您想直接影响原始数组,可以将上面的内容替换为 #map!
,这会改变原始数组。
希望对您有所帮助!
因为.each
returns一个原始数组。你必须使用 .map
['1','2','3'].map(&:to_i)
=> [1, 2, 3]
各定义:
rb_ary_each(VALUE array)
{
long i;
volatile VALUE ary = array;
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_AREF(ary, i));
}
return ary; # returns original array
}
另一种方式可能是:
print ['1','2','3'].collect(&method(:Integer))
但是请注意,如果您要在生产中使用,这可能会对性能造成不利影响。