我有以下代码
public class direction do(direction)
if(istrue) {
left = do(left);
} else {
right = do(right);
}
}
我想知道是否还有缩短这一点。我尝试使用三元运算符,但遇到了一些困难。建议?
答案 0 :(得分:4)
在您的示例中,三元运算符没有明智的用途。
Java(和其他类C语言)中的三元运算符的值是三元运算符表达式是表达式,而if语句是语句 。表达式产生值,但语句不产生。如果您没有使用三元运算符表达式产生的值,那么您就没有使用三元运算符的业务。只是不要这样做。
为了您的兴趣,以下是有效使用三元运算符的示例:
int max(int x, int y) {
return x > y? x : y;
}
答案 1 :(得分: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; }
答案 2 :(得分:0)
您的代码要求您根据条件分配两个不同的变量(left
或right
)。三元表达式无助于您这样做,因为它不能在赋值的左侧使用。
离开(两个)作业的RHS。虽然理论上你可以使用三元表达式,但它可能会使代码更长。
所以简短的回答是三元运算符无法帮助。