我试图将用户输入与我的散列值进行比较。如何将用户输入与散列值进行比较
例如,如果我在IRB中运行"e".scrabble()
,它会在我的散列中返回“e”的值。
我想出了如何识别它是否在我的散列中,以及它是否等于散列中的一个键。
class String
define_method(:scrabble) do
value_for_letters = {
"A"=> 9,"B" => 2,"C" => 2,"D" => 4,"E" => 12,"F" => 2,
"G" => 3, "H" => 2, "I" => 9,"J" => 1, "K" => 1,
"L" => 4,"M" => 2,"N" => 6,"O" => 8,"P" => 2,"Q" => 1,
"R" => 6,"S" => 4,"T" => 6,"U" => 4,"V" => 2,"W" => 2,
"X" => 1,"Y" => 2,"Z" => 1
}
value_for_letters.keys().==(self.capitalize())
"true"
end
end
我只是重新格式化你的代码稍微缩进两个空格的红宝石惯例接轨。有两件事我发现你的代码有点奇怪:你选择使用'define_method'而不是简单的'def scrabble ...',并且你以正式的方式调用了'String#=='方法。 ==(...)'),而不是使用“语法糖”键()== self.capitalize'(额外的parens不是必需的,顺便说一句)。我怀疑这就是你在学习Ruby的早期阶段所教的内容,这是一件非常好的事情!你会很快学习传统的方法。 –
感谢提示@CarySwoveland –