我在这里有一个yml文件,我在其中获取了部分ruby代码并将其作为哈希:
answer: "The answer is: #{result}"
结果变量来自我在这里发起的ruby代码:
require 'yaml'
MESSAGES = YAML.load_file('mymessages.yml')
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('answer')
当我启动它时,它只是将整个文本显示为字符串但结果变量未显示w / c假设是2个数字的加法或减法等。
你知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:1)
YAML和Ruby是两种不同的语言。你不能在YAML中使用Ruby字符串插值,因为YAML是YAML,而不是Ruby。你只能在Ruby中使用Ruby字符串插值。
答案 1 :(得分:0)
您是否尝试过使用FILE?我测试了它但结果没有显示出来。
答案 2 :(得分:0)
你需要在一个单独的脚本中提取你遇到问题的代码,你可以单独测试或发布,这里是我对你的代码所做的一个例子,我必须猜测你的Yaml的内容文件,因为你没有提供。
require 'yaml'
MESSAGES = YAML.load_file('./mymessages.yml')
p MESSAGES # poor mans debug
operator = MESSAGES["operator"].to_f #supposing in your yaml it is a Hash with key "operator"
#operator = '1' # for testing without the yaml
number1, number2 = 4.0, 5.0
result = case operator
when '1'
number1 + number2
when '2'
number1 - number2
when '3'
number1 * number2
else
number1 / number2
end
puts result # 9.0
prompt = "The answer is: #{result}".sub(/\.0$/,'') #remove unwanted traling .0
puts prompt # The answer is: 9
你看我使用变量,我可以检查put或p,真正的测试会更好,但我没有时间解释所有这些,但你应该学习它。 如果您多次执行.to_i转换,请尝试将其保存在变量中。 此外,我还没有看到需要使用整数和浮点数,如果一个是浮点数,将它们全部视为浮点数,如果你不想要使用子方法删除它,或者使用chaneg类型删除它曾经这样
result = result.to_i if result == result.to_i