2

在我的示例代码中,我试图用“redact”或“redact_again”替换“text”中的任何单词。由于这是一个非此即彼的场景,我认为||会被使用。事实证明,这&&确实有效。如果两者或其中之一匹配,它将正确地用“已编辑”一词替换它们。如果找不到匹配项,它只会重新打印应有的“文本”。我只是想了解为什么 using||在非此即彼的情况下不起作用?

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
4

2 回答 2

1

以下应该工作

 if x == redact || x == redact_another
   print "REDACTED "
 else
   print x + " "
 end

或者

 print [redact, redact_another].include?(x) ? "REDACTED " : x + " "
于 2012-12-06T06:11:24.700 回答
0

这是导致这种情况发生的布尔条件。

布尔值是 a01

  • 何时&&使用 两个变量都必须1true
  • 何时||使用 EITHER 变量必须1true

颠倒逻辑意味着以下两个陈述在逻辑上是正确的:

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

漂亮。

于 2012-12-06T07:17:54.393 回答