更新:這是一個瘋狂的追逐。在我根據建議的答案進行更改後,該方法奏效了。但是,當我稍後嘗試時,它不再工作。我已經意識到這一切都是在我如何使用調試器。我在areSameColor裏面有一個斷點。當我逐步完成代碼時,我認爲areUniqueColors沒有被執行。但是,我正在跨越第二個條件,我認爲這是短路。最後,它正確評估下面的兩個選項。我選擇堅持我的第二個例子,因爲它看起來更具可讀性。感謝大家的時間。If語句短路 - 如何評估
我如何if語句正在評估以下迷茫......
if(![self areSameColor:setCards] && ![self areUniqueColors:setCards]){
match = NO;
}
在我的測試案例[自areSameColor:setCards]計算結果爲NO ...所以使用!我希望它能評估第二種情況。在看調試器的時候,它似乎正在變成一個真正的結果。
我也試圖與此:
if(!([self areSameColor:setCards] || [self areUniqueColors:setCards])){
match = NO;
}
在這兩種情況下,它不會評估第二個條件。 areSameColor和areUniqueColor返回BOOL。
我的預期評估...
areSameColor | areUniqueColor | MATCH
NO | NO | match = NO
YES | NO | match UNCHANGED
NO | YES | match UNCHANGED
我怎麼思考這個錯誤的?
areSameColor和areUniqueColors的預期結果是什麼,具體取決於您想要設置的匹配標誌。 – 2013-04-08 04:47:26
在這種情況下,areSameColor == NO和areUniqueColor == YES。我期望match = NO被跳過。 – 2013-04-08 04:48:30