我有一个看起来像这样的ruby数组:
[nil, 3, 4, 2]
我想将它转换为整数,如下:
342
这是否可能,如果是这样,我该怎么做呢?
答案 0 :(得分:9)
[nil, 3, 4, 2].join.to_i
#=> 342
答案 1 :(得分:2)
是
[nil, 3, 4, 2].inject(0){|x, d| d ? (x * 10) + d : x}
# => 342
答案 2 :(得分:1)
当你不能简单地遵循操作优先权并且ruby变成lispy - ))
a = [nil, 3, 5, 5]
a.each_with_index.inject(0) { |s, e| s+(e[0].to_i)*(10**(a.length-1-e[1])) }
#=> 355
下面的行是更多a-la-ruby的同义词。感谢@Stefan的指导。
a.reverse.each_with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e }
a.reverse_each.with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e }
上面的代码片段只是将每个元素乘以10的幂并将它们相加。