在我的示例代码中,我试图用“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

最佳答案

这是一个导致这种情况发生的条件。
布尔值可以是a01
当使用&&时,两个变量都必须1才能true
当使用||时,任何一个变量都必须1才能true
颠倒逻辑意味着以下两个语句在逻辑上是正确的:

(x == redact || x == redact_another) == (if x != redact && x != redact_another)

很漂亮。

10-08 04:22