嗨,下面的语句抛出error。它说“不是声明”
map.containsKey(1)? someObject.setFlag(true) : map.put(1,"hello");
是否需要将返回的值存储在语句左侧的某个变量中?
答案 0 :(得分:4)
您将Ternary
运算符用作statement
,而不是assignment
。您应使用if else
if(map.containsKey(1)) {
someObject.setFlag(true)
}else{
map.put(1,"hello");
}
这里是三元运算符的Java docs。
答案 1 :(得分:2)
三元运算符是表达式,而不是语句。它通常用于根据某些条件设置变量的值。在这种情况下,您需要将结果分配给变量,以使其成为语句:
String result = map.containsKey(1) ? someObject.setFlag(true) : map.put(1,"hello");
(注意:您应该选择一个更好的变量名。)
我认为您在这里仍然会遇到问题,因为setFlag()
可能不会返回String
。另外,由于您正在创建副作用,因此应使用if
语句代替它。