not
と!
の評価が異なることをどこかで読んだことを思い出しますが、ドキュメントで見つけることができません。彼らは同義ですか?
それらはほぼ同義ですが、完全ではありません。違いは、!
がnot
よりも優先順位が高いことです。&&
と||
がand
とor
よりも優先順位が高いようです。
!
はすべての演算子の中で最も高い優先順位を持ち、not
は最も低い演算子の1つです。 Ruby docs で完全なテーブルを見つけることができます。
例として、以下を検討してください。
!true && false
=> false
not true && false
=> true
最初の例では、!
がhighest優先順位を持っているため、事実上false && false
と言っています。
2番目の例では、not
の優先順位がtrue && false
よりも低いため、false
をtrue && false
からtrue
に「切り替え」ました。
一般的なガイドラインは、not
を使用する特別な理由がない限り、!
に固執することです。 Rubyの!
は、他のほとんどの言語と同じように動作し、not
よりも「驚くほどではありません」。
not
演算子を理解する簡単な方法は、not true && false
を!(true && false)
と同等であると見なすことです。