我有以下一段代码
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(和其他类 C 语言)中三元运算符的值是三元运算符表达式是一个表达式,而 if 语句是一个语句。表达式产生值,但语句不产生。如果您没有使用三元运算符表达式产生的值,那么您没有使用三元运算符的业务。只是不要这样做。
为了您的兴趣,下面是一个有效使用三元运算符的示例:
int max(int x, int y) {
return x > y? x : y;
}
如果您团队中的其他程序员不介意,您可以使用三元表达式。因此,如果您的示例使用有效的 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; }
您的代码要求您根据条件分配给两个不同的变量(left
或)。right
三元表达式无法帮助您做到这一点,因为它不能用于赋值的左侧。
这留下了(两个)作业的 RHS。虽然理论上您可以使用三元表达式,但它可能会使代码更长。
所以简短的回答是三元运算符无济于事。