当我运行此创建字母计数器哈希的方法时,它运行正常
def letter_count(str)
ashh = Hash.new
str.each_char do |x|
if x != " "
ashh["#{x}"] = str.count(x)
end
end
return ashh
end
但是,当我创建一个使用哈希将字符串转换为莫尔斯电码的方法时,它不允许我在必须将其放在外面的方法内部创建哈希。为什么我对第一种方法却能这样做?
def morse_encode(str)
arrWords = str.split
Morse = {
"a" => ".-",
"b" => "-...",
"c" => "-.-.",
"q" =>"--.-",
"t" => "-",
"i" => "..",
"h" => "....",
"n" => "-."
}
output = []
word = ""
arrWords.each do |x|
word = []
currentWord = x.split("")
currentWord.each do |y|
word.push(MorseHash[y].to_s)
end
output.push(word.join(" "))
end
return output.join(" ")
end
除非将哈希移到函数外部,否则第二个代码将不会运行。
答案 0 :(得分:0)
Morse
被视为一个类,请尝试将其更改为任何其他有效的哈希定义形式,
可以做到
morse = Hash.new
morse = {}
希望这会有所帮助。