2015-05-01 4 views
1

Clojure async put! docs говорит (курсив добавлен)Clojure async класть! Возвращаемое значение

Асинхронный ставит Валу в порт, вызывая Fn0 (если входит в комплект), когда завершена. значения nil не допускаются. Бросает, если закрыт. Если on-caller? (по умолчанию true) истинно, а put сразу принят, вызывается fn0 при вызове потока. Возвращает ноль.

Еще пример кода возвращает истину

user=> (put! c "XYZ") 
true 

ли документы неправильно или я что-то отсутствует?

ответ

1

Это было исправлено в this commit, новая строка документ гласит:

 
"Asynchronously puts a val into port, calling fn1 (if supplied) when 
complete, passing false iff port is already closed. nil values are 
not allowed. If on-caller? (default true) is true, and the put is 
immediately accepted, will call fn1 on calling thread. Returns 
true unless port is already closed." 
+0

ли 'fn1' (1) означают одно ARG? –

+0

Нет, это литерно имя аргумента '([port val fn1] (put! Port val fn1 true)) * * creative * eh? –

+0

Я имею в виду соглашение о том, что fn1 означает функцию 1 arg? Я попробовал '(put! C 125 (fn [] (println« done with put »)))' и получил 'clojure.lang.ArityException: ошибочное количество аргументов (1) прошло' при выполнении 'take!'. Но '(put! C 125 (fn [x] (println" done with put ")))' работал отлично, что заставляет меня думать, что ему нужна функция 1 arg. –

Смежные вопросы