我正在编写一个测验程序,我需要将布尔语句作为字符串存储在数组中,并将它们作为问题的一部分输出到终端。然后我想评估这些字符串的内容并返回值,以便我可以测试我是否正确回答了问题。这就是我想要做的事情:
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"
。有关如何处理此问题的任何想法吗?
答案 0 :(得分:2)
您正在寻找eval。这里:
a = "true && false"
eval a
# => false
a = "true && true"
eval a
# => true
eval
会让你"将存储在字符串中的布尔语句转换为可以评估的格式" 。您需要相应地更改逻辑才能使用它。