answer="this" or answer = "that"
罗嗦
我希望能够使用更像的表达式,answer =("this" or that")
但我知道我不能or
在完成后使用该表达式,然后将(真或假)结果与答案进行比较,所以这不是我想要的。更像 a =~ [a/c] 但我需要插值。
answer="this" or answer = "that"
罗嗦
我希望能够使用更像的表达式,answer =("this" or that")
但我知道我不能or
在完成后使用该表达式,然后将(真或假)结果与答案进行比较,所以这不是我想要的。更像 a =~ [a/c] 但我需要插值。
我假设您的意思是==
(平等比较)而不是=
(分配)。如果是这种情况,根据具体情况,您可以执行以下操作之一:
if [this, that].include? answer
# or #
case answer
when this, that
# do something
end
后者更适合当您有许多要检查的选项集时,而前者在您只有一组您感兴趣的选项时更具可读性。(我通常会将选项粘贴在命名变量,所以它会更像if right_answers.include? answer
. 这样它就可以清楚地读取并且易于维护。)
您还可以使用正则表达式:
answer = 'this'
true if answer =~ /th[is|at]/
=> true
answer = 'that'
true if answer =~ /th[is|at]/
=> true
answer = 'blah'
true if answer =~ /th[is|at]/
=> nil
实际上,this || that
实际上并不返回 TRUE 或 FALSE。它将返回第一项,除非该项为 'falsey'(false 或 nil,注意 "" 不是 false 或 nil),否则将返回第二项。因此,以下将起作用:
foo = nil
bar = "that"
baz = ""
qux = false
answer = foo || bar # => "that"
answer = bar || foo # => "that"
answer = baz || bar # => ""
answer = foo || qux # => false
answer = qux || foo # => nil
因此,实际上,您的表达式answer =("this" or that")
实际上会起作用,只是它总是会评估为“this”,因为“this”不是“假”。