最初の例を分解してみましょう。
self.primary_format == "Single" || self.primary_format == "EP"
演算子の優先順位を適用して括弧を追加すると、次のようになります。
(self.primary_format == "Single") || (self.primary_format == "EP")
はメソッドなので#==
、次のようになります。
(self.primary_format.==("Single")) || (self.primary_format.==("EP"))
の値を入力してみましょうself.primary_format
。どうですか"EP"
。
("EP".==("Single")) || ("EP".==("EP"))
#==
両側でメソッドを呼び出すと、
(false) || (true)
左側が偽物であるため、右側を返します。
true
次に、2番目の例を分解してみましょう。
self.primary_format == "Single" || "EP"
演算子の優先順位を適用して括弧を追加すると、次のように==
バインドされるため、これが得られ||
ます。
(self.primary_format == "Single") || ("EP")
もう一度、#==
そのメソッド呼び出しバリアントに切り替えましょう。
(self.primary_format.==("Single")) || "EP"
"EP"
もう一度forを入力してみましょうself.primary_format
。
("EP".==("Single")) || "EP")
を呼び出す#==
と、
(false || "EP")
の左側||
が偽物なので、右側が返されます。したがって、値は次のとおりです。
"EP"
それはどちらfalse
でもないので、それ自体は真実nil
です。
したがって、要約すると、演算子がその側の式をどのように好むか、||
またはグループ化するかについて考える必要があります。==
最初の例では、「この値が「Single」に等しい場合は「true」を教えてください。そうでない場合は「EP」に等しい場合は「true」を教えてください。それ以外の場合は「false」を教えてください」
2番目の例では、「この値が「Single」と等しい場合は「true」を教えてください。そうでない場合は「EP」を教えてください」と述べています。
お役に立てば幸いです。