簡體   English   中英

什么是使用條件運算符的其他什么都不做?

[英]What is the equivalent of else do nothing using the conditional operator?

我想知道if語句的等價物:

if (condition) {
        // do something
    }else{
        // do nothing

    }

使用條件運算符:

(condition) ? // [do nothing] : {do nothing} "

使用條件運算符不可能“無所事事”。 你總是必須在兩邊都有有效的表達式,盡管這兩個表達式都可以被轉換為void

這是三元運算符(?:)的不利之處。

它需要三個地方的表達。 你不能跳過他們中的任何一個。

您可以對其進行一些調整,但其True-part和/或False-part可以分配給:

int big=100;
big= (10 > 100) ? 0 : big;
if (!condition) {
        // do something
    }else{
        // do nothing

    }

現在看一下!之前的匯款:-)

的! 條件之前只需將“if”切換為“if not”......

那是你一直在尋找的嗎?

originalValue = (condition) ? newValue : originalValue

然后編譯器應該刪除對原來不必要的originalValue賦值。

海灣合作委員會有一個擴展,可以給你更多的東西給你所尋找的東西,比如

originalValue = condition ?: newValue;

因此它也可以在clang中使用。 你必須! 雖然條件。

在普通代碼中,答案是沒有等價的 - 表達式的所有子表達式都必須有一個值,但......

以下不是推薦

以下內容應該適用於一般情況:

condition ? ( (^{ do something })(), 0 ) : 0;

這是一般情況。 如果做某事是單一的,非復合的,陳述; 如方法調用; 然后可以刪除該塊以給出:

condition ? (do something, 0) : 0;

在實際代碼中不建議這樣做!

你可以做這樣的事情

someBool ? [self someFunction] : (^{})(); //empty block

暫無
暫無

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

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