2011-03-04 79 views
1

我有下面這段代碼如何使用三元運算符縮短此代碼?

public class direction do(direction) 
    if(istrue) { 
     left = do(left); 
    } else { 
     right = do(right); 
    } 
} 

我想知道是否有無論如何縮短這個。我嘗試使用三元運算符,但遇到了一些困難。建議?

+7

它已經不夠短了嗎?此外,這看起來不像有效的Java代碼。 – MAK 2011-03-04 04:12:51

+0

缺少方法行中的括號。這是假設是一個while while循環嗎? – Jim 2011-03-04 04:15:33

+3

你甚至可以使用'do'作爲函數名嗎? 「方向」,「左」和「右」定義在哪裏?爲什麼不只是發佈整個示例而不是試圖「簡化」它。 – mellamokb 2011-03-04 04:16:24

回答

2

如果團隊中的其他程序員不介意,可以使用三元表達式。所以,如果你的例子是在有效的Java:

public void Do(Direction direction) 
{ 
    (istrue)? left = Do(left) : right = Do(right); 
} 

你可以省略大括號中if

public void Do(Direction direction) 
{ 
    if (istrue) 
     left = Do(left); 
    else 
     right = Do(right); 
} 

或者你甚至可以有一個襯墊:

public void Do(Direction d) { (istrue)? left = Do(left) : right = Do(right); } 

首先,選擇一種清晰而不太聰明的風格。如果讓代碼更易於閱讀和理解,請使用更多行。

一行程序一般都不會非常具有可讀性,儘管在某些情況下,他們是有意義的(對我),特別是如果你有一個非常類似的小方法家屬:

public String getFirstName()  { return first_name; } 
public String getLastName()   { return last_name; } 
public String getAddress1()   { return address1; } 
public String getAddress2()   { return address2; } 
public String getCity()    { return city; } 
public String getState()   { return state; } 
public String getZip()    { return zip; } 
4

在您的例子,有三元操作員沒有明智的用途。

在Java中(以及其他類似C語言)三元運算符的值是一個三元運算表達式是表達,而如果語句是一個語句。表達式產生的價值,但聲明不。如果您沒有使用三元運算符表達式產生的值,那麼您沒有使用三元運算符的業務。只是不要這樣做。

爲了您的利益,這裏有一個有效的使用三元運算符的例子:

int max(int x, int y) { 
    return x > y? x : y; 
} 
0

您的代碼需要分配給取決於條件兩個不同的變量(leftright)。三元表達式不會幫助你做到這一點,因爲它不能用在任務的左側。

這留下了(兩個)任務的RHS。儘管理論上可以使用三元表達式,但它可能會使代碼更長。

所以簡單的答案是三元運算符不會幫助。