给定数组 [1,2,3],除了迭代之外,是否有其他方法将其转换为整数 123?
只需将数组连接起来,然后将结果字符串转换为整数:
[1,2,3].join.to_i
如果你想避免转换成和转换回字符串,你可以使用inject
:
[1,2,3].inject{|a,i| a*10 + i}
#=> 123
标签。Integer([1,2,3].join, 10) #=> 123
因为这种方法有一个好处,就是如果数组中有非数字元素,它会抛出一个异常,你可以处理该异常:
>> Integer([1,2,'a'].join, 10) # ArgumentError: invalid value for Integer: "12a"
将其与to_i
进行比较:
>> [1,2,'a'].join.to_i #=> 12
Integer [0, 1, 1].join, 10 # => 11
,而不是 Integer [0, 1, 1].join # => 9
。 - Jörg W Mittag
[1,2,3]
中的每个元素后,累加器a
的值依次为:010+1 = 1;然后 110+2 = 12;最后 12*10+3 = 123。 - Jon Schneider