返回一个整数而不是字符串的数组

时间:2014-12-22 17:25:34

标签: ruby ruby-on-rails-3

我写了以下代码

a = [2,4,6]

def add_value_and_index(anArray)
newArray = []
anArray.each_with_index do |element, index|
    total = element + index
    total
    newArray <<"#{total}"
    newArray
  end
  newArray
  #newArray.to_i does not work
end

add_value_and_index(a)中

这应该返回一个数组,它是索引号和值的组合。该方法有效。然而,我在strings =&gt;中获得输出[“3”,“5”...]虽然我想要整数=&gt; [1,2,3]。

我尝试添加newArray.to_i,但这不起作用。关于如何将这个数组转换为整数的任何想法?

2 个答案:

答案 0 :(得分:6)

newArray <<"#{total}" # WRONG

您正在将字符串推入数组,期望最终获得整数。将上面的行更改为:

newArray << total

只是仅供参考,您可以使用map来清理这里的内容。

def your_method(array)
  array.map.with_index do |element, index|
    element + index
  end
end

答案 1 :(得分:0)

正如@humza指出的那样,错误是newArray << total &#34;#{总}&#34;是字符串插值,它基本上是在字符串中评估占位符。

这只是一个单行解决方案......如果你有兴趣...

a.collect.each_with_index {|num, index| num + index}

地图和收集之间也没有区别...
Difference between map and collect in Ruby?