1

Недавно я задал мета-вопрос о действительности замены термина «тройной» оператор на «условный» оператор. Один из комментариев по моему второму вопросу заявил следующее:Существуют ли тернарные операторы, которые не являются каким-то условным оператором

ternary operator - любой оператор, который принимает 3 аргумента. Условный оператор является тернарным оператором, но он не единственный (хотя в некоторых языках программирования он может быть единственным).

Это, по-видимому, указывает на то, что строгое чтение термина тернарный оператор означает оператор, который принимает три аргумента. Однако, по моему собственному опыту, и, взглянув на страницу википедии на тернарном операторе, я не видел примера тройного оператора, который не был условным тернарным оператором той или иной формы.

На практике есть встроенный язык пример тернарного оператора, который не имеет следующего вида (условный оператор)?

if arg1 then arg2 else arg3 

Я не ищу какой-либо конкретный язык, хотя предпочтение отдается, по меньшей мере, умеренной популярности.

ответ

1

Я уверен, что нет другого тернарного оператора в любом из основных языков программирования. Однако в lisp-подобных языках на самом деле нет разницы между функцией и оператором, поэтому любая функция с тремя аргументами подобна тройному оператору.

Интересный вопрос вашего вопроса: почему это так? Я считаю, что есть одна основная причина:

Почему существуют операторы? Не можете ли вы всегда использовать функцию? Конечно, но операторы могут сделать код более удобным для чтения. Но в целом это справедливо только для унарных и двоичных операторов, где вы помещаете один аргумент вправо и, необязательно, другой аргумент слева от оператора. С тройными операторами нет никакого очевидного места для третьего аргумента. Оператор условного присваивания также страдает от этой проблемы, но он настолько полезен, что он все равно установлен.