Тернарные операторы. Возможно одностороннее действие?
Некоторое время я использовал троичные операторы, и мне было интересно, есть ли метод, позволяющий, скажем, вызывать функцию без предложения else
. Пример:
if (isset($foo)) {
callFunction();
} else {
}
Теперь, очевидно, мы можем пропустить else
чтобы сделать:
if (isset($foo)) {
callFunction();
}
Теперь для троичного. Как можно "обойти" предложение else, если условие возвращает false?
isset($foo) ? callFunction() : 'do nothing!!';
Или загадка или не возможно?
Ответы
Ответ 1
короткого замыкания
isset($foo) and callFunction();
Отмените условие и опустите второй аргумент
!isset($foo) ?: callFunction();
или вернуть только "что-то"
isset($foo) ? callFunction() : null;
Однако троичные операторы предназначены для условного извлечения значения из двух возможных значений. Вы вызываете функцию, поэтому кажется, что вы действительно ищете if
и неправильно используете ?:
для сохранения символов?
if (isset($foo)) callFunction();
Ответ 2
Зачем вам использовать тернарный оператор в этом случае? Тернарный оператор предназначен для использования при наличии двух возможных сценариев и не имеет особого смысла в случае, когда вы заботитесь только о случае if
. Если вы должны сделать это, однако, просто оставьте пустой случай: (cond)?do_something():;
Ответ 3
Поставьте нуль после двоеточия. Кроме того, если вы используете Perl, вы можете использовать более "условия" и "действие" () "," действие "(), если условия" идиомы ".