3 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
在这种情况下,您甚至不需要三元运算符:
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
或者,清洁工:
cmdCse.setVisible(selection.equalsIgnoreCase("produkt"));
您的版本:
selection.toLowerCase().equals("produkt")? cmdCse.setVisible(true): cmdCse.setVisible(false);
在语义上是不正确的:三元运算符应表示替代的赋值,它不能完全替代if
语句。还行吧:
double wow = x > y? Math.sqrt(y): x;
因为你要么分配x
或Math.sqrt(y)
到wow
,根据条件。
我的2cents:仅在使程序更清晰时才使用三元运算符,否则最终将得到一些难以理解的单线。
慕容3067478
TA贡献1773条经验 获得超3个赞
三元运算符与if语句不完全一样。三元运算符必须从双方“返回”某些内容,因此将像setVisible()这样的void方法调用放在那儿是行不通的。
相反,您可以完全不用三元运算符来执行以下操作:
cmdCse.setVisible(selection.toLowerCase().equals("product"));
但是,为了说明这一点,三元等价物看起来像这样:
cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false);
请注意,现在三元运算符如何在两侧“返回”真或假,而不是简单地调用void方法。
四季花海
TA贡献1811条经验 获得超5个赞
直接从文档
如果使代码更易读,请使用?:运算符而不是if-then-else语句。例如,当表达式紧凑且没有副作用(例如赋值)时。
如果您cmdCse.setVisible(true / false);
不返回任何内容,并且该操作还具有副作用(它会更改的状态cmdCse
),因此此处不能使用条件运算符(当您使用运算符时,?
和:
分支必须具有相同的返回类型)。
顺便说一句,请注意.. ? .. : ..
应称为conditional operator
添加回答
举报
0/150
提交
取消