Итак, это предложение этапа 1 для оператора конвейера:
https://github.com/tc39/proposal-pipeline-operator
value |> func
, что по сути является func(value)
What Я бы хотел превратить следующий код в один лайнер:
const collision = howDidTheyCollide(entityA, entityB);
if (!!collision) handleCollision(entityA, entityB, collision);
Я хочу, чтобы синтаксис вызывал функцию, только если аргумент правдив. Не нужно задействовать оператора конвейера.
Предположим, что ?>
будет передавать функцию только в том случае, если значение истинно, я бы вообразил что-то вроде:
howDidTheyCollide(entityA, entityB) ?> handleCollision(entityA, entityB, ?)
Если бы вместо этого у меня были функции, возвращающие массив аргументов, тогда это могло бы быть :
[entityA, entityB] |> howDidTheyCollide ?> handleCollision
Другой потенциал - что-то вроде handleCollision(howDidTheyCollide(a, b)?)
где? представляет Don't call this function, unless this is truthy
Знак вопроса также может быть в начале функции, чтобы представить Don't call this function if ANY arguments are falsey
РЕДАКТИРОВАТЬ: Просмотрите список проблем оператора конвейера, и я нашел это отличное предложение (тоже такой же синтаксис: p ): https://github.com/tc39/proposal-pipeline-operator/issues/159#issuecomment -554463586