私はローマ字からアラビア数字への変換を行う必要がある練習に取り組んでいます。私が知る限り、以下のコードは完全に正当なものですが、テストを実行するとエラーが発生します。 Rubyは37行目に未定義のメソッドや変数があると思っています(以下のコメントで言及します)。クラスのメソッドを呼び出すためのRubyの構文
私のsnytaxがオフになっているのか、それが他のものであるのか疑問に思っています。提案?
class ArabicNumeral
def replace_troublesome_roman_numerals(letters)
tough_mappings = {"CM" => "DCCCC", "CD" => "CCCC", "XC" => "LXXXX", "XL" => "XXXX", "IX"=> "VIIII", "IV" => "IIII"}
tough_mappings.each { |roman, arabic| letters = letters.gsub(roman, arabic) }
letters
end
def convert_and_add(letters)
digits = { "M" => 1000, "CM" => 900, "D" => 500, "C" => 100, "XC" => 90, "L" => 50, "XL" => 40, "X" => 10, "IX" => 9, "V" => 5, "IV" => 4, "I" => 1}
letters = letters.split("")
letters.inject(0) do |sum, letter|
arabic = digits[letter]
sum += arabic
end
end
def self.convert(letters)
roman_string = replace_troublesome_roman_numerals(letters) ###LINE 37!
arabic_number = convert_and_add(roman_string)
arabic_number
end
end
ありがとうございます!私はすべてのメソッドを "クラスレベル"に持って行きました。私は "自己"をポップした。各メソッド名の前に、私のすべてのテストがパスします。 –