Мені справді подобається цей оператор, але читача слід враховувати.
Ви завжди повинні врівноважувати компактність коду з часом, витраченим на його читання, і в тому, що він має деякі досить серйозні недоліки.
Перш за все, йдеться про справу оригіналу Аскера. Він просто провів годину, публікуючи про це і читаючи відповіді. Скільки часу знадобилося б авторові писати кожен?: Як би / то протягом усього його життя. Не годину, щоб бути впевненим.
По-друге, у мовах, подібних до С, ви звикли просто знати, що умовні умови - це перше, що в цьому рядку. Я помітив це, коли використовував Ruby і натрапив на лінії:
callMethodWhatever(Long + Expression + with + syntax) if conditional
Якби я довго був користувачем Ruby, у мене, ймовірно, не виникло б проблем з цією лінією, але виходячи з C, коли ви бачите "callMethodWever" як перше в рядку, ви очікуєте його виконання. ?: Менш криптовалютний, але все ще досить незвичний, щоб відкинути читача.
Перевага, однак, - це дійсно прикольне відчуття в животі, коли ви можете написати 3-рядковий рядок, якщо вислів знаходиться в проміжку 1 рядка. Не можу заперечити це :) Але, чесно кажучи, не обов'язково читати 90% людей там просто через її рідкість.
Коли це справді завдання, що базується на булевих значеннях і значеннях, у мене з цим проблеми не виникає, але з цим легко можна зловживати.