LetterCountI CoderByte。使用工作代码引发异常
LetterCountI CoderByte. Raises Exception with working code
学习编程,新手问题不好意思!在这里,我有一段代码可以在我的 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
是的,这是版本。在 Ruby 1.8.7 hash.select
returns an Array 中,没有 keys
方法。在以后的版本中 select
returns 一个 Hash.
学习编程,新手问题不好意思!在这里,我有一段代码可以在我的 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
是的,这是版本。在 Ruby 1.8.7 hash.select
returns an Array 中,没有 keys
方法。在以后的版本中 select
returns 一个 Hash.