让我们拆开第一个例子。
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
现在让我们拆掉第二个例子。
self.primary_format == "Single" || "EP"
如果你应用运算符优先级并添加括号,你会得到这个,因为== 的绑定比|| 更紧密:
(self.primary_format == "Single") || ("EP")
再一次,让我们将#== 切换到它的方法调用变体:
(self.primary_format.==("Single")) || "EP"
让我们再次为self.primary_format 填写"EP"。
("EP".==("Single")) || "EP")
拨打#==即可获得
(false || "EP")
由于|| 的左边是假的,所以返回右边。所以值为:
"EP"
这本身就是真的,因为它既不是false也不是nil。
因此,总而言之,您需要考虑像 || 或 == 这样的运算符如何将其两侧的表达式组合在一起。
第一个例子说“如果这个值等于'Single',告诉我'true'。如果不是,如果它等于'EP',告诉我'true',否则告诉我'false'”
p>
第二个例子说“如果这个值等于'Single',告诉我'true'。如果不是,告诉我'EP'”。
希望对你有帮助!