无法在方法内部创建哈希

时间:2018-06-23 05:45:24

标签: ruby hash

当我运行此创建字母计数器哈希的方法时,它运行正常

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

除非将哈希移到函数外部,否则第二个代码将不会运行。

1 个答案:

答案 0 :(得分:0)

Morse被视为一个类,请尝试将其更改为任何其他有效的哈希定义形式,

可以做到

morse = Hash.new
morse = {}

希望这会有所帮助。