Ste*_*ger 13 java ternary-operator ternary
有没有办法在三元操作中实现这一点.我对那些三元组的东西很新,也许你可以指导我.
if(selection.toLowerCase().equals("produkt"))
cmdCse.setVisible(true);
else
cmdCse.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
这个似乎不起作用.
selection.toLowerCase().equals("produkt")?cmdCse.setVisible(true):cmdCse.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
Ste*_*ppo 25
在这种情况下,您甚至不需要三元运算符:
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
Run Code Online (Sandbox Code Playgroud)
或者,清洁:
cmdCse.setVisible(selection.equalsIgnoreCase("produkt"));
Run Code Online (Sandbox Code Playgroud)
你的版本:
selection.toLowerCase().equals("produkt")? cmdCse.setVisible(true): cmdCse.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
在语义上是不正确的:三元运算符应该代表替代分配,它不是if语句的完全替代.还行吧:
double wow = x > y? Math.sqrt(y): x;
Run Code Online (Sandbox Code Playgroud)
因为你要么分配x或Math.sqrt(y)到wow,根据条件.
我的2cents:只有当你的程序更清晰时才使用三元运算符,否则你最终会得到一些难以理解的单行程序.
也许
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
Run Code Online (Sandbox Code Playgroud)
三元运算符与if语句不完全相同.三元运算符必须从两边"返回"某些东西,因此将void方法调用(如setVisible())放在一起将无效.
相反,你可以在没有三元运算符的情况下做这样的事情:
cmdCse.setVisible(selection.toLowerCase().equals("product"));
Run Code Online (Sandbox Code Playgroud)
但为了证明这一点,三元等效物看起来像这样:
cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false);
Run Code Online (Sandbox Code Playgroud)
注意现在三元运算符如何"返回"两侧的true或false,而不是简单地调用void方法.
| 归档时间: |
|
| 查看次数: |
3764 次 |
| 最近记录: |