我有下面這段代碼如何使用三元運算符縮短此代碼?
public class direction do(direction)
if(istrue) {
left = do(left);
} else {
right = do(right);
}
}
我想知道是否有無論如何縮短這個。我嘗試使用三元運算符,但遇到了一些困難。建議?
我有下面這段代碼如何使用三元運算符縮短此代碼?
public class direction do(direction)
if(istrue) {
left = do(left);
} else {
right = do(right);
}
}
我想知道是否有無論如何縮短這個。我嘗試使用三元運算符,但遇到了一些困難。建議?
如果團隊中的其他程序員不介意,可以使用三元表達式。所以,如果你的例子是在有效的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; }
在您的例子,有三元操作員沒有明智的用途。
在Java中(以及其他類似C語言)三元運算符的值是一個三元運算表達式是表達,而如果語句是一個語句。表達式產生的價值,但聲明不。如果您沒有使用三元運算符表達式產生的值,那麼您沒有使用三元運算符的業務。只是不要這樣做。
爲了您的利益,這裏有一個有效的使用三元運算符的例子:
int max(int x, int y) {
return x > y? x : y;
}
您的代碼需要分配給取決於條件兩個不同的變量(left
或right
)。三元表達式不會幫助你做到這一點,因爲它不能用在任務的左側。
這留下了(兩個)任務的RHS。儘管理論上可以使用三元表達式,但它可能會使代碼更長。
所以簡單的答案是三元運算符不會幫助。
它已經不夠短了嗎?此外,這看起來不像有效的Java代碼。 – MAK 2011-03-04 04:12:51
缺少方法行中的括號。這是假設是一個while while循環嗎? – Jim 2011-03-04 04:15:33
你甚至可以使用'do'作爲函數名嗎? 「方向」,「左」和「右」定義在哪裏?爲什麼不只是發佈整個示例而不是試圖「簡化」它。 – mellamokb 2011-03-04 04:16:24