Короткое Java, если еще, если еще заявление

1

У меня есть короткая инструкция if else:

(one == two) ? "do this" : "do this"

Есть ли вообще добавить if if в это утверждение?

Кажется, я ничего не могу найти с помощью if if else...

Я отношусь к короткому заявлению, а не к тому, если это еще не так.

Благодарю.

  • 7
    Что вы имеете в виду?
  • 0
    Хотя вы можете сделать это (как @CommuSoft, изложенный в его ответе), вам следует избегать таких конструкций, поскольку они создают код, который труднее понять. Для простых проверок сокращенно if - это хорошо, для более сложных операций следует использовать if ... else if ... else. Память не является ограничивающим фактором, и любой, кто будет работать с вашим кодом в будущем, будет благодарен за то, что ему не придется работать с более поздними конструкциями.
Теги:
if-statement

6 ответов

3
Лучший ответ

Если вы хотите преобразовать что-то вроде:

if(A) {
    return X;
}
else if(B) {
    return Y;
}
else {
    return Z;
}

Вы можете написать это как:

A ? X : (B ? Y : Z);

Таким образом, вы пишете else if, : else if в качестве условия в другой -part (после того, как :) верхнего выражения.

Однако я бы настоятельно советовал слишком много каскадировать. Код становится чрезвычайно нечитаемым и ? : ? : структура кода никогда не была разработана для этого.

  • 0
    @ SotiriosDelimanolis: спасибо за голову, изменил его.
  • 0
    Это чисто для использования, если, если еще, еще 3 условия. Я могу понять, почему, для удобства чтения, вы не захотите добавлять слишком много, если оно есть! Благодарю.
Показать ещё 1 комментарий
7

Вы можете расширить это до любого количества предложений, в полной аналогии с конструкцией if-else.

return a == b? "b"
     : a == c? "c"
     : a == d? "d"
     : "x";

В этом виде он довольно близко напоминает Lisp cond, как по форме, так и по семантике.

Но обратите внимание, что это не "стенография if/else", потому что это выражение, а если /else - это оператор. Было бы довольно плохое злоупотребление тернарным оператором, если бы выражения имели побочные эффекты.

  • 0
    Отличный ответ, может продолжаться вечно!
3

":" - это другое

(one == two) ? "do this" : "do that"

Если один равен двум, то "сделайте это", в противном случае (если один не равен двум), чем "сделайте это".

0

Это работает как оператор 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.

0

Да, оператор выше может быть написан с использованием if-else. Здесь используется оператор Ternary.

if(one==two)
 {
    //Code
 }
else
 {
    //code
 }

Тернарный оператор уменьшает строку кода (LOC), записывая условие в одном выражении вместо многих, используя "?:".

Для получения дополнительной информации см.:

http://java.meritcampus.com/t/48/Ternary-operator?tc=mm71

http://java.meritcampus.com/t/60/If-else-if-ladder?tc=mm72

0

Иногда я использую Карты для таких ситуаций:

private final static Map <String, String> codesMap = <generate the map with values>
...
codesMap.get(one)
  • 0
    Это не совсем эквивалентно, поскольку, if операторы могут быть сложными и иметь неотъемлемый приоритет (а именно, первое условие имеет приоритет над вторым). Кроме того, поиск в словаре является дорогостоящим по сравнению с одним условием.
  • 0
    @CommuSoft вы можете попробовать заказанные карты для приоритетов. Что касается производительности - да, это может быть проблемой в некоторых приложениях, а не серебряной пулей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню