用于初始化两个变量之一的条件运算符
Conditional operator to initalize one of two variables
我知道可以做这样的事情来根据特定条件初始化整数变量:
boolean myCond = getCond();
int x = myCond ? 13 : 42;
但是有没有办法使用条件运算来选择两个变量之一呢?相当于以下 if-else
int x = 0;
int y = 0;
if(myCond){
x = 13;
}
else{
y = 13;
}
根据条件赋initial/other值即可:
int x = myCond ? 13 : 0;
int y = !myCond ? 13 : 0;
您必须明确分配变量才能使用它们(如果它们是局部变量)。
我想你可以这样做:
int unused = myCond ? (x = 13) : (y = 13);
但这是对语法的滥用,因为您必须引入未使用的变量才能从条件表达式中生成语句。
由于无论如何都需要分配和初始化这两个变量,所以这样做以满足!myCond
条件。那么其他条件就够了
int x = 0;
int y = 13;
if(myCond){
x = 13;
y = 0;
}
添加到其他答案:你不能像
这样写作业的原因
(cond ? x : y) = 13;
是因为the Java language说你不能。
如果您查看 15.26 中 赋值语句 的定义,赋值运算符的左侧在允许的范围内非常有限。稍微简化一下讨论,它要么是标识符(即对简单变量的赋值),要么是数组访问(即对数组元素的赋值),要么是字段访问(即对成员变量的赋值)。
我知道可以做这样的事情来根据特定条件初始化整数变量:
boolean myCond = getCond();
int x = myCond ? 13 : 42;
但是有没有办法使用条件运算来选择两个变量之一呢?相当于以下 if-else
int x = 0;
int y = 0;
if(myCond){
x = 13;
}
else{
y = 13;
}
根据条件赋initial/other值即可:
int x = myCond ? 13 : 0;
int y = !myCond ? 13 : 0;
您必须明确分配变量才能使用它们(如果它们是局部变量)。
我想你可以这样做:
int unused = myCond ? (x = 13) : (y = 13);
但这是对语法的滥用,因为您必须引入未使用的变量才能从条件表达式中生成语句。
由于无论如何都需要分配和初始化这两个变量,所以这样做以满足!myCond
条件。那么其他条件就够了
int x = 0;
int y = 13;
if(myCond){
x = 13;
y = 0;
}
添加到其他答案:你不能像
这样写作业的原因 (cond ? x : y) = 13;
是因为the Java language说你不能。
如果您查看 15.26 中 赋值语句 的定义,赋值运算符的左侧在允许的范围内非常有限。稍微简化一下讨论,它要么是标识符(即对简单变量的赋值),要么是数组访问(即对数组元素的赋值),要么是字段访问(即对成员变量的赋值)。