在我的示例代码中,我试图用“redact”或“redact”替换“text”中任何匹配的单词。因为这是一个非此即彼的场景,我想应该使用||
。事实证明&&
确实有效如果两者或其中任何一个都匹配,它会正确地将它们替换为“已编辑”一词。如果找不到匹配项,它只会按原样重新打印“文本”我只想了解为什么在非此即彼的场景中使用||
不起作用?
puts "Tell me a sentence"
text = gets.chomp.downcase
puts "Redact this word: "
redact = gets.chomp.downcase
puts "And redact another word: "
redact_another = gets.chomp.downcase
words = text.split(" ")
words.each do |x|
if x != redact && x != redact_another
print x + " "
else
print "REDACTED "
end
end
最佳答案
这是一个导致这种情况发生的条件。
布尔值可以是a0
或1
。
当使用&&
时,两个变量都必须1
才能true
。
当使用||
时,任何一个变量都必须1
才能true
。
颠倒逻辑意味着以下两个语句在逻辑上是正确的:
(x == redact || x == redact_another) == (if x != redact && x != redact_another)
很漂亮。