Обзор тернарных операторов в разных языках программирования
Википедия приводит пример как можно использовать тернарный оператор в похожей на switch манере
В VB такой вариант записи работает с 9 ой версии.
Но в Python даже если бы foo был пустой строкой или нулем bar стал бы равен 1.
Обычно тернарная условная операция ассоциируется с операцией
?: (
condition ? true value : false value), но в разных языках она выглядит по разному и я хотел бы рассмотреть её на примере получения модуля числа.
C/C++/C#/Java/Javascript
Стандартная запись для большинства языков.
Стандартная запись для большинства языков.
(x > 0) ? x : -x;
Python
x if x > 0 else -x
На StackOveflow увидел как можно сделать тоже самое "немного" иначе:
1. (-x, x)[x > 0]
2. x > 0 and x or -x
b = 3
a = 1 if b==1 else \
2 if b==2 else \
3
Visual BasicВ VB такой вариант записи работает с 9 ой версии.
If(x > 0, x, -x)
До этого для этих целей могла использоваться тернарная функция Iif(x > 0, x, -x)
но так как она являлась функцией все её параметры должны быть определены до вызова функции. Например, в следующем случае Iif(x <> 0, 10/x, x)
выражение 10/x посчиталось бы даже если x = 0 (что привело бы к ошибке), чего бы не произошло при использовании тренарного оператора If который появился в 9ой версии VB.Переключатель (case) с помощью тернарного оператора
Пока писал про тренанрный оператор неожиданно узнал для себя что можно использовать тернарный оператор как аналог switch case. Вот еще пример с синтаксисом Си. vehicle = arg == 'B' ? bus :
arg == 'A' ? airplane :
arg == 'T' ? train :
arg == 'C' ? car :
arg == 'H' ? horse :
feet;
Null coalescing operator
Пока смотрел что есть про тернарный оператор набрел на null coalescing operator(не знаю как он правильно переводится на русский так что так его называть и буду). Он в каком-то смысле сродни тернарному оператору. Например в C# он выглядит так
possiblyNullValue ?? valueIfNull
Смысл же его заключается в том чтобы вернуть вторую переменную если первая оказалась равна null.
Допустим следующее - если название не определено нам нужно получить название по умолчанию. Вот как можно сделать это с помощью тернарного оператора.
string pageTitle = (suppliedTitle == null) ? "Default Title" : suppliedTitle;
Или же мы можем воспользоваться null coalescing оператором
string pageTitle = suppliedTitle ?? "Default Title";
Этот оператор можно также найти и ряде других языков. В Python он отсутствует как отдельный оператор, но такое же поведение можно получить при использовании or.
foo = None
bar = foo or 1 # теперь bar == 1
ВСЕ ПРОЧИТАЙТЕ НАСТОЯЩЕЕ ОТЗЫВ О том, КАК Я ПОЛУЧИЛ СВОЙ КРЕДИТ ОТ КОМПАНИИ LEGIT И ДОВЕРЕННОЙ КРЕДИТНОЙ СРЕДИ Меня зовут Kjerstin Lis, я искал кредит для погашения своих долгов, все, кого я встречал, мошенничали и брали свои деньги, пока я наконец не встретил мистера Бенджамина Брейл Ли Он смог дать мне кредит в размере 450 000 рублей. Он также помог другим моим коллегам. Я говорю как самый счастливый человек во всем мире сегодня, и я сказал себе, что любой кредитор, который спасает мою семью от нашей бедной ситуации, я скажу имя всему миру, и я так счастлив сказать, что моя семья вернулся навсегда, потому что я нуждался в кредите, чтобы начать свою жизнь заново, потому что я одинокая мама с 3 детьми, и весь мир, казалось, висел на мне, пока я не имел в виду, что БОГ послал кредитора, который изменил мою жизнь и член моей семьи, БОЖИЙ кредитор, мистер Бенджамин, он был Спасителем БОГом, посланным для спасения моей семьи, и сначала я подумал, что это будет невозможно, пока я не получу кредит, я пригласил его к себе в семью -все вечеринка, от которой он не отказался, и я посоветую всем, кто действительно нуждается в кредите, связаться с г-ном Бенджамином Брейлом Ли по электронной почте (lfdsloans@outlook.com), потому что он самый понимающий и добрый кредитор. когда-либо встречал с заботливым сердцем. Он не знает, что я делаю это, распространяя свою добрую волю ко мне, но я чувствую, что должен поделиться этим со всеми вами, чтобы освободить себя от мошенников, пожалуйста, остерегайтесь подделок и свяжитесь с правильной кредитной компанией. com или whatsapp + 1-989-394-3740. ,
ОтветитьУдалить