簡體   English   中英

條件運算符中的return語句

[英]Return statement in conditional operator

我有一個代碼段,如下所示:

if(a < b)
{
    x = y;
    return w;
}
/* all unrelated variables above*/
x = something;
y = something;
/*both x and y from above*/

x和y是全局變量,並且在if部分中對其進行了修改,我需要將y賦給x,然后返回w,或者簡單地返回一個常數。

我需要使用三元運算符替換if部分:

我嘗試了以下方法:

return (((a < b) ? (x = y, w) : 1), (x = something, y = something));

但是,我似乎沒有得到理想的結果。 我知道這是錯的。 這是因為我使用了類似表達式的返回值:

if(x < y)
    return (x = y);
return 1;

我寫為:

return ((x < y) ? x = y : 1);

但是,如何返回一個值,該值涉及在三元運算符中預先分配完全不同的變量?

Mankarse建議的解決方案:

return (a < b) ? (x = y, w) : (x = something, y = something, z);

實際上等於:

if (a < b) {
    x = y;
    return w;
}
/* all unrelated variables above*/
x = something;
y = something;
return z;

第二個return語句很重要。

您不能從表達式的中間有條件地返回,因為return是一條語句,因此您必須返回整個表達式。 因此,這實際上取決於分配給y之后要如何進行。 或者,如果您確實需要在表達式中間更改執行順序,則可以拋出一個異常,但是在這種情況下,我認為那太復雜了。

將代碼塊放入函數中。

function f(){
x = y;//assumes x, y and w are global.
return w;
}

然后在條件語句中使用該函數。

(a < b) ? f() : "value to return if a>=b";

您不需要將return放在條件語句之前,因為自動返回值的1,取決於條件的評估。

暫無
暫無

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

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