如何将字符串中的语句转换为可以评估的格式(Ruby)

时间:2015-02-20 07:44:48

标签: ruby string eval

我正在编写一个测验程序,我需要将布尔语句作为字符串存储在数组中,并将它们作为问题的一部分输出到终端。然后我想评估这些字符串的内容并返回值,以便我可以测试我是否正确回答了问题。这就是我想要做的事情:

questions = ["!true", "!false", "true || true", "true && false"...]
puts "Answer true or false"
puts questions[0]
answer = gets.chomp
# evaluate value of questions[0] and compare to answer
...

仅存储这些陈述并不像我需要的那样工作:

questions = [!true, !false, true || true, true && false...]
puts questions[3].to_s

它返回已评估的语句,即"false",而不是"true && false"。有关如何处理此问题的任何想法吗?

1 个答案:

答案 0 :(得分:2)

您正在寻找eval。这里:

a = "true && false"
eval a
# => false

a = "true && true"
eval a
# => true

eval会让你"将存储在字符串中的布尔语句转换为可以评估的格式" 。您需要相应地更改逻辑才能使用它。