这是一段代码:
def allLongestStrings(inputArray)
array = Array.new
inputArray.each do |i|
if inputArray[i].length == inputArray.max.length
array << inputArray[i]
end
end
return array
end
inputArray = ["aba", "aa", "ad", "vcd", "aba"]
它表示&#34;没有将String隐式转换为整数&#34;我无法弄清楚。我做错了什么?
答案 0 :(得分:2)
错误在这里:
if i.length == inputArray.max.length # i instead of inputArray[i]
array << i
end
但我建议使用select:
input_array = ["aba", "aa", "ad", "vcd", "aba"]
max_length = input_array.max.length
input_array.select { |el| el.length == max_length }
#=> ["aba", "vcd", "aba"]
答案 1 :(得分:1)
访问ruby array issue 4525
的文档你可以看到“i”不是数组的位置而是整个元素。
然后,正确的代码是:
if i.size== inputArray.max.size
array << i
end
根据ruby样式指南,最好使用大小而不是长度。 https://ruby-doc.org/core-2.2.0/Array.html#method-i-each