LetterCountI CoderByte。使用工作代码引发异常

时间:2015-04-03 15:54:45

标签: ruby arrays hash version

学习编程很抱歉初学者的问题!在这里,我有一个代码可以在我的sublime文本编辑器中工作,但在Coderbyte上引发了一个异常,据我所知使用Ruby 1.8.7。我怀疑它可能与不同版本的Ruby有关。有助于理解出了什么问题。谢谢你的回复!

提出的例外是:

(eval):9: undefined method `keys' for []:Array (NoMethodError)  from (eval):4:in `each' from (eval):4:in `LetterCountI' from (eval):23

def LetterCountI(str)

  str = str.split
  repeating_letters = []
  str.each do |word| 
    word = word.split("")
    letters = Hash.new(0)
    word.each { |letter| letters[letter] += 1 }
    selected_letters = letters.select { |key, value| value > 1 }
    repeating_letters << selected_letters.keys.length
  end
  if (repeating_letters.select {|l| l >= 1}).empty?
    return -1
  else
    max = repeating_letters.max
    p repeating_letters
    return str[repeating_letters.index(max)]
  end
end

1 个答案:

答案 0 :(得分:0)

是的,这是版本。在Ruby 1.8.7 hash.select returns an Array中,它没有keys方法。在以后的版本中,select会返回一个哈希。