1

我有以下一段代码

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

我想知道是否有办法缩短这个。我尝试使用三元运算符,但遇到了一些困难。建议?

4

3 回答 3

4

在您的示例中,三元运算符没有合理的用途。

Java(和其他类 C 语言)中三元运算符的值是三元运算符表达式是一个表达式,而 if 语句是一个语句。表达式产生值,但语句不产生。如果您没有使用三元运算符表达式产生的值,那么您没有使用三元运算符的业务。只是不要这样做。

为了您的兴趣,下面是一个有效使用三元运算符的示例:

int max(int x, int y) {
    return x > y? x : y;
}
于 2011-03-04T05:07:05.240 回答
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; }
于 2011-03-04T04:50:27.140 回答
0

您的代码要求您根据条件分配给两个不同的变量(left或)。right三元表达式无法帮助您做到这一点,因为它不能用于赋值的左侧。

这留下了(两个)作业的 RHS。虽然理论上您可以使用三元表达式,但它可能会使代码更长。

所以简短的回答是三元运算符无济于事。

于 2011-03-04T05:49:01.553 回答