Ruby代码跳过程序的某一部分
我试图运行一个计算器程序,但由于某种原因,它跳过了部分代码。以下是我的全部ruby代码:Ruby代码跳过程序的某一部分,ruby,Ruby,我试图运行一个计算器程序,但由于某种原因,它跳过了部分代码。以下是我的全部ruby代码: # require yaml file require 'yaml' MESSAGES = YAML.load_file('calculator_messages.yml') LANGUAGE = 'en' def messages(message, lang='en') MESSAGES[lang][message] end def prompt(key) message = messag
# require yaml file
require 'yaml'
MESSAGES = YAML.load_file('calculator_messages.yml')
LANGUAGE = 'en'
def messages(message, lang='en')
MESSAGES[lang][message]
end
def prompt(key)
message = messages(key, LANGUAGE) # make sure the "messages" method is declared above this line
Kernel.puts("=> #{message}")
end
def integer?(input)
input.to_i.to_s == input
end
def float?(input)
input.to_f.to_s == input
end
def valid_number?(input)
integer?(input) || float?(input)
end
def operation_to_message(op)
word = case op
when '1'
'Adding'
when '2'
'Subtracting'
when '3'
'Multiplying'
when '4'
'Dividing'
end
word
end
prompt('welcome')
name = ''
loop do
name = Kernel.gets().chomp()
if name.empty?()
prompt('valid_name')
else
break
end
end
prompt("Hi #{name}!")
loop do # main loop
number1 = ''
loop do
prompt('first_number')
number1 = Kernel.gets().chomp()
if valid_number?(number1)
break
else
prompt('not_a_valid_number')
end
end
number2 = ''
loop do
prompt('second_number')
number2 = Kernel.gets().chomp()
if valid_number?(number2)
break
else
prompt('not_a_valid_number')
end
end
operator_prompt = <<-MSG
What operation would you like to perform?
1) add
2) subtract
3) multiply
4) divide
MSG
prompt(operator_prompt)
operator = ''
loop do
operator = Kernel.gets().chomp()
if %w(1 2 3 4).include?(operator)
break
else
prompt('choose_number_range')
end
end
prompt("#{operation_to_message(operator)} the two numbers")
result = case operator
when '1'
number1.to_i() + number2.to_i()
when '2'
number1.to_i() - number2.to_i()
when '3'
number1.to_i() * number2.to_i()
else
number1.to_f() / number2.to_f()
end
prompt("The answer is: #{result}")
prompt('next_step')
answer = Kernel.gets().chomp()
break unless answer.downcase().start_with?('y')
end
prompt('goodbye_msg')
三,。最后是在结果变量中打印实际答案的部分
result = case operator
when '1'
number1.to_i() + number2.to_i()
when '2'
number1.to_i() - number2.to_i()
when '3'
number1.to_i() * number2.to_i()
else
number1.to_f() / number2.to_f()
end
prompt("The answer is: #{result}")
你知道它为什么跳过这些代码吗 问题:据我所知,您的
提示信息试图翻译,但可能找不到翻译,例如“嗨,Felix”
您可以通过更改消息
功能快速检查此理论:
def messages(message, lang='en')
MESSAGES[lang][message] || "NO TRANSLATION FOUND"
end
并再次观察输出
更新
OP证实了这一理论,并在评论中要求“解决方案”,最便宜的可能是:
def messages(message, lang='en')
# Look up translation, default to untranslated message.
MESSAGES[lang][message] || message
end
哪一部分被准确地跳过了它被写在顶部1,2,3“没有找到翻译”出现在上面。怎么解决这个问题?
def messages(message, lang='en')
# Look up translation, default to untranslated message.
MESSAGES[lang][message] || message
end