Тернарные операторы. Возможно одностороннее действие?

Некоторое время я использовал троичные операторы, и мне было интересно, есть ли метод, позволяющий, скажем, вызывать функцию без предложения 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, вы можете использовать более "условия" и "действие" () "," действие "(), если условия" идиомы ".