Ответ 1
Нет, вы не можете этого сделать. Вместо этого попробуйте следующее:
if(bool1 && bool2) voidFunc1();
До тех пор, пока я не искал сеть, оператор всегда имеет условие if и else, такое как a ? b : c
. Я хотел бы знать, можно ли использовать термальный оператор if
без else
.
Предполагая, что у меня есть следующий код, я хочу закрыть PreparedStatement
, если он не равен null
(Я использую язык программирования Java.)
PreparedStatement pstmt;
//....
(pstmt!=null) ? pstmt.close : <do nothing>;
Нет, вы не можете этого сделать. Вместо этого попробуйте следующее:
if(bool1 && bool2) voidFunc1();
Просто напишите это?
if(pstmt != null) pstmt.close();
Это точная длина.
Зачем использовать тернарный оператор, если у вас есть только один выбор?
if (pstmt != null) pstmt.close();
достаточно!
Тернарный оператор if
- это конкретный тернарный оператор. Единственный в своем роде.
Из Wiki:
В математике тройная операция является n-арной операцией с n = 3.
Это означает, что для вас требуются все 3 операнда.
Тернарная операция называется тройной, поскольку она принимает 3 аргумента, если она принимает 2, это двоичная операция.
И как отмечено выше, это выражение возвращает значение.
Если вы опустите else, у вас будет ситуация undefined, в которой выражение не вернет значение.
Итак, как и в другом ответе, вы должны использовать оператор .
Как уже упоминалось в других ответах, вы не можете использовать тернарный оператор для этого.
Однако, если вам понадобится, вы можете использовать Java 8 Optional и lambdas, чтобы включить эту логику в одно утверждение
Optional.of(pstmt).ifPresent((p) -> p.close())