让我们拆掉第一个例子。
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"
"EP"
让我们self.primary_format
再次填写一个。
("EP".==("Single")) || "EP")
打电话给#==
你
(false || "EP")
由于 的左边||
是假的,所以返回右边。所以价值是:
"EP"
这本身就是真的,因为它既不是false
也不是nil
。
因此,总而言之,您需要考虑运算符如何喜欢||
或==
将其两侧的表达式组合在一起。
第一个例子说“如果这个值等于'Single',告诉我'true'。如果不是,如果它等于'EP',告诉我'true',否则告诉我'false'”
第二个例子说“如果这个值等于'Single',告诉我'true'。如果不是,告诉我'EP'”。
我希望这会有所帮助!