Вы можете сделать это еще хуже и использовать запятые, смотрите!
doc.name = doc.name === offer.title ? doc.name : (shouldUpdate = true, offer.title);
doc.uri = doc.uri || (shouldUpdate = true, encodeURI(offer.title));
doc.info = doc.info || (shouldUpdate = true, {
activation: offer.activation,
image: offer.image
});
Проблема состоит в том, что Ваше использование let
является неправильным.
работы, которым Позволяют, как это:
(let [identifier (expr)])
, Таким образом, Ваш пример должен быть чем-то вроде этого:
(let [s (Scanner. "a b c")]
(exprs))
можно только использовать лексическую привязку, сделанную с позволенным в рамках позволенного (открытие и закрытие parens). Позвольте просто создает ряд лексической привязки. Я использую определение для того, чтобы сделать глобальную привязку, и позволяет для привязки чего-то, что я хочу только в пределах позволенного, поскольку это содержит вещи в чистоте. У них обоих есть свое использование.
ПРИМЕЧАНИЕ: (Класс). совпадает с (новый Класс), это - просто синтаксический сахар.
ПОЗВОЛЕННЫЙ не, "делают лексическую привязку в текущей области", но "делают новый лексический контекст со следующей привязкой".
(let [s (foo whatever)] ;; s is bound here ) ;; but not here
(def s (foo whatever)) ;; s is bound here
Упрощенный: определение для глобальных констант, позволяют , для локальных переменных.
Правильный синтаксис:
(let [s (Scanner. "a b c")] ...)
Синтаксис для них отличается, даже если значения связаны.
позволяют, берет список привязки (пары значение-имя), сопровождаемые выражениями для оценки в контексте тех, которые связывают.
определение просто берет привязку того, не список, и добавляет его к глобальному контексту.