如何将字符串中的语句转换成可以求值的格式(Ruby)

How to convert a statement in a string into a format that can be evaluated (Ruby)

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

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

它return是评估语句,即"false",而不是"true && false"。关于如何解决这个问题的任何想法?

您正在寻找 eval。这里:

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

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

eval会让你"convert a boolean statement stored in a string into a format that can be evaluated"。您需要相应地更改您的逻辑才能使用它。