2010-09-14 123 views
2

我正在尋找一種語義或語言結構,它將簡化我的if語句中的一些。如果我有一個帶有or的if語句,我在兩個值之間選擇'',我想在代碼中稍後提供所選的變量。語法或構造簡化if()語句?

我將在僞代碼寫:

if (x or y) { 
    function(z); 
} 

zxy值,取其觸發if是真實的。否則,我在示例中的重複是沒有多少寫

if (x) { 
    ... 
    function(x); 
} 

if (y) { 
    ... 
    function(y); 
} 

現在,但是在我的實際情況,有大約6的代碼,這將是每個if塊內重複相同的線條。所以,我寫的是這樣的:

if (x) { 
    z = x; 
} 

if (y) { 
    z = y; 
} 

if (z) { 
    ... 
    function(z); 
} 

但是,這似乎只是如此迂迴我懷疑沿線某處一些大師想出了一個很好的語法,使單行if。在任何可以將觸發值綁定到後續塊中的變量的語言中,是否存在構造?這個結構會被稱爲什麼?

我正在使用的實際情況是在PHP中,所以我意識到PHP可能沒有這種能力。

回答

1

在Python(也是Ruby)中,表達式x or y的計算結果爲x,如果爲真,則返回y。您可以將該陳述寫爲f(x or y)z = x or y

+0

謝謝,jleedev,這正是我一直在尋找的。這個構造是否有名字? – user151841 2010-09-14 18:31:17

1

對於這種確切的情況。您可以使用?操作:

z = x ? x : y; 

其內容爲:z是(如果x不是假的)×否則爲y。

0

其實,像

if ($z = ($x ? $x : $y)) { 
    function($z); 
} 

像宣傳的那樣在PHP。謝謝,slebetman!