У меня есть короткая инструкция if else:
(one == two) ? "do this" : "do this"
Есть ли вообще добавить if if в это утверждение?
Кажется, я ничего не могу найти с помощью if if else...
Я отношусь к короткому заявлению, а не к тому, если это еще не так.
Благодарю.
Если вы хотите преобразовать что-то вроде:
if(A) {
return X;
}
else if(B) {
return Y;
}
else {
return Z;
}
Вы можете написать это как:
A ? X : (B ? Y : Z);
Таким образом, вы пишете else if
, :
else if
в качестве условия в другой -part (после того, как :
) верхнего выражения.
Однако я бы настоятельно советовал слишком много каскадировать. Код становится чрезвычайно нечитаемым и ? :
? :
структура кода никогда не была разработана для этого.
Вы можете расширить это до любого количества предложений, в полной аналогии с конструкцией if-else
.
return a == b? "b"
: a == c? "c"
: a == d? "d"
: "x";
В этом виде он довольно близко напоминает Lisp cond
, как по форме, так и по семантике.
Но обратите внимание, что это не "стенография if/else", потому что это выражение, а если /else - это оператор. Было бы довольно плохое злоупотребление тернарным оператором, если бы выражения имели побочные эффекты.
":" - это другое
(one == two) ? "do this" : "do that"
Если один равен двум, то "сделайте это", в противном случае (если один не равен двум), чем "сделайте это".
Это работает как оператор if-else-statement
но технически вы можете преобразовать его в оператор if-else-statement
. Это будет выглядеть так:
if (one == two) {
"do this"
} else {
"do that"
}
если ваш вопрос заключается в том, можно ли вставить оператор if (one == two)? "do this": "do this"
(one == two)? "do this": "do this"
... нет, скорее вы должны использовать вложенные операторы if.
Да, оператор выше может быть написан с использованием if-else. Здесь используется оператор Ternary.
if(one==two)
{
//Code
}
else
{
//code
}
Тернарный оператор уменьшает строку кода (LOC), записывая условие в одном выражении вместо многих, используя "?:".
Для получения дополнительной информации см.:
Иногда я использую Карты для таких ситуаций:
private final static Map <String, String> codesMap = <generate the map with values>
...
codesMap.get(one)
if
операторы могут быть сложными и иметь неотъемлемый приоритет (а именно, первое условие имеет приоритет над вторым). Кроме того, поиск в словаре является дорогостоящим по сравнению с одним условием.