Тернарный оператор Java за три минуты — SitePoint
Java
Поскольку вы можете использовать его как выражение, часто это позволяет вам удалить несколько операторов return в методе, заменив их одним выражением.
целая цена () { если (премиум-член()) { вернуть 80; } еще { вернуть 100; } }
Можно заменить на
int price() { вернуть isPremiumMember() ? 80 : 100; }
Обновленный метод price
стал значительно короче и разборчивее, чем раньше.
Вложение нескольких операторов
Java позволяет вкладывать один условный оператор в другой. Однако будьте осторожны при этом. Вложенные условные операторы могут затруднить чтение.
целая сумма = 10; Результат строки = сумма <= 2 ? "пара" : количество > 2 && количество < 5 ? "несколько" : количество <= 5 ? "несколько" : "много";
Хотя пример можно улучшить с помощью форматирования, иногда лучше избегать использования тернарного оператора и использовать старый добрый , если
- то- , иначе
, или маршрут оператора switch.
Резюме
Вы узнали, что тернарный оператор позволяет сократить , если
-затем- else
заявление в одну строку условие ? Истина : Ложь
. Если все сделать с умом, это сделает код более лаконичным и улучшит читабельность.
Однако меньше строк кода не всегда лучше. Легко злоупотреблять тернарным оператором и сделать ваш код менее читаемым. Руководствуйтесь здравым смыслом и имейте в виду, что программы должны быть написаны для того, чтобы их могли читать люди, и только случайно для машин. Более читаемым способом выражения условий, особенно если их много, может быть оператор switch.
Поделиться этой статьей
Индрек Отс
Разработчик программного обеспечения, аппаратный хакер, интересуется машинным обучением, бегун на длинные дистанции.
control flownicolaipquick-tip
Как использовать тернарный условный оператор в строках запроса
В этом руководстве показано, как использовать тернарный условный оператор, также известный как тернарный-если, в строках запроса. Тернарный условный оператор оценивает логическое выражение и возвращает результат одного из двух выражений, в зависимости от того, является ли логическое выражение истинным или ложным.
if-then-else
кодовый блок. Синтаксис тернарного условного оператора: состояние ? выражениеIfTrue : выражениеIfFalse
Знак вопроса ( ?
) отделяет условие от выражений, а двоеточие ( :
) отделяет выражение, оцениваемое, когда условие истинно, от выражения, оцениваемого, когда условие ложно.
Выражение x ? y : z
оценивается следующим образом:
- Если
x
истинно, выражение оценивается какy
. - Если
x
ложно, выражение оценивается какz
.
Пример
Бюджет строителя дома составляет 3,50 доллара за досковый фут на закупку пиломатериалов, и он хотел бы знать, какие породы древесины входят в его бюджет. Мы можем использовать тернарный оператор для создания новой таблицы со столбцом «да» или «нет», который отвечает, соответствует ли тип древесины бюджетным ограничениям.
леса = новаяТаблица(
stringCol("Тип", "Сосна", "Пихта", "Кедр", "Дуб", "Ясень", "Орех", "Бук", "Вишня"),
stringCol("Твердость", "мягкий" , "мягкий", "мягкий", "жесткий", "жесткий", "жесткий", "жесткий", "жесткий"),
doubleCol("Цена", 1,95, 2,50, 3,25, 3,45, 4,25, 7,95 , 4,10 , 5.25)
)result = woods.update("Budget = (Price<=3.50) ? `yes` : `no` ")
- woods
- result
Для более сложных случаев , троичные операторы if могут быть вложенными. Например:
условие1 ? (условие2 ? значение1 : значение2) : значение3
Выражение x ? (y ? 1 : 2) : 3
оценивается следующим образом:
- Если и
x
, иy
истинны, выражение оценивается как 1. , выражение оценивается как 2. - Если
x
ложно, выражение оценивается как 3.
Пример
Бюджет строителя дома составляет 3,50 долл. какие виды древесины находятся в пределах их бюджета. Мы можем использовать вложенные тернарные операторы для создания новой таблицы с да
или нет
Столбец, который отвечает, соответствует ли тип древесины как бюджетным ограничениям, так и твердой древесине.
В этом примере столбец Возможный
да
, только если древесина является твердой и цена меньше 3,50 долларов США. В противном случае древесина не предлагается как возможность для клиента.result = woods.update("Возможно = (Hardness == `hard`) ? ( (Price <= 3.50) ? `yes` : `no` ) : `no` ")
- результат
Если твердая древесина является требованием, но бюджет является гибким, можно использовать вложенные тройные операторы if для классификации твердой древесины как бюджетной
или дорогой
, а все другие типы древесины как нет
.