簡體   English   中英

三元運算符/用三元運算符替換if / else

[英]Ternary Operator / Replacing if/else with ternary operator

我試圖用三元運算符替換if else語句

如果伏特加的成本$ 24以折扣價18返回(24 * .75)

這個if else循環工作正常,並給了我想要的結果,但是當我嘗試將其轉換為三進制時,在xcode中出現“ expected':'”錯誤。 我在這里做錯了什么?

三元運算符的工作原理是這樣的(條件)? (executeFirst):(executeSecond)

這是我所擁有的:


NSUInteger cost = 24;
if (cost == 24) {
    return cost *= .75);
} else {
    return nil;
}    

NSUInteger cost = 24;
(cost = 24) ? return cost *= .75 : return nil;

return cost;

}

三元運算符用於為某個變量分配值。

采用

cost = (cost == 24) ? cost * 0.75 : cost;

要么:

return (cost == 24) ? cost*0.75 : cost;

注意“ ==”和“ =”之間的區別。 您必須在輸入中打錯了輸入或忘記了輸入。 '=='符號檢查左值和右值是否相等,'='將右值分配給左側(變量)。

您應將三元運算符值分配給某個變量,否則將其返回。

NSUInteger cost = 24;
cost = (cost == 24) ? cost * .75 : nil;
return cost;

要么

NSUInteger cost = 24;
return (cost == 24) ? cost * .75 : nil;

您想要的是這樣的:

NSUInteger cost = 24;
return (cost == 24) ? cost *= .75 : return nil;

2件事:

  1. 三元運算符的第一部分(條件)應為布爾值,您之前有一個賦值( == vs. =

  2. 返回三元運算符的結果。

三元運算符必須求值(將其視為必須返回值的迷你函數)。 對於三元condition ? one : two condition ? one : two ,你不能在onetwo處有陳述(例如x = 3 ); 它們必須是表達式。 所以在你的情況下

return (cost == 24 ? 0.75 * cost : nil);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM