2

私のサンプル コードでは、'redact' または 'redact_again' のいずれかと一致する '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
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

これが発生するのはブール条件です。

ブール値は a0または1です。

  • が使用される場合&&、両方の変数が である必要があり1ますtrue
  • を使用する場合||、いずれかの変数を にする必要があり1ますtrue

論理を逆にすることは、次の 2 つのステートメントが論理的に正しいことを意味します。

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

気の利いた。

于 2012-12-06T07:17:54.393 に答える