Arrays 如何将整数数组转换为整数

Arrays 如何将整数数组转换为整数,arrays,ruby,Arrays,Ruby,我有一个ruby数组,如下所示: [nil, 3, 4, 2] 我想将其转换为整数,如下所示: 342 这有可能吗?如果有,我该怎么做 [nil, 3, 4, 2].join.to_i #=> 342 当您不能简单地遵循操作优先级并且ruby变成lispy-)时 下面几行是更多的a-la-ruby同义词。谢谢你的指导 a.reverse.each_with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e } a.reverse_

我有一个ruby数组,如下所示:

[nil, 3, 4, 2]  
我想将其转换为整数,如下所示:
342

这有可能吗?如果有,我该怎么做

[nil, 3, 4, 2].join.to_i
#=> 342

当您不能简单地遵循操作优先级并且ruby变成lispy-)时

下面几行是更多的a-la-ruby同义词。谢谢你的指导

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的幂并求和。

您不需要压缩。如果允许通过字符串进行往返,那么它就很简单(如Andrey所示)。尝试在不使用字符串的情况下实现它。很好的练习。如果数组可以包含
nil
s,那么像
[nil,nil,nil]
这样的数组应该转换成什么?(如果你的答案是
0
,那么
[3,2,nil,1]
是否应该转换为
321
3201
?)这是你问@TomLord的一个有效点,不过在我的例子中,这个数组是我编写的函数的输出。我编写这个函数的方式是,它总是以
[nil,1]
[nil,1,2]
[nil,3,4,2]
的形式返回给我一个数组。在我有
[nil,0,1]
的情况下,我希望
[nil,1,0,4]
1
104
。我不确定这是否是您要问的问题?您能否获得数组:
[nil]
[0]
?是否要将它们都转换为
0
?这里并没有“错误答案”;我只是想指出,如果数组中有非整数,那么你所做的有点不可靠。(或者如果有多位数的数字)这可能是其中一个问题,我们的道德义务是教他们钓鱼,而不是给他们鱼。很好,尽管我会使用
ari.compact.inject{x,d | x*10+d}
来处理
nil
是的,你是对的,让我来修复它。您可以使用额外的括号分解数组参数,并以相反的顺序迭代元素,以避免调用
a.length
调用:
a.reverse\u each.with_index.inject(0){s,(i,e)|s+i.to_i*10**e}
之前没有尝试过
reverse\u each
谢谢。
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.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 }