Clojure: Неверный номер аргумента для «утверждать»? - PullRequest
1 голос
/ 12 января 2012

Я изучаю Clojure и бездельничаю на REPL. Для assert в документации написано

Usage: (assert x)
   (assert x message)

Evaluates expr and throws an exception if it does not evaluate to
logical true.

Так что я ожидал, что (assert false "Error message") выдаст ошибку и выведет "Error message". Тем не менее, это дает

java.lang.IllegalArgumentException: Wrong number of args (4) passed to: core$assert (NO_SOURCE_FILE:0)

Почему говорится, что у меня есть четыре аргумента, и что будет правильным использованием? Документация к assert не слишком многословна.

1 Ответ

6 голосов
/ 13 января 2012

Я только что попробовал его на 1.2.1, и у меня такое же поведение, как и у вас.

Затем я попробовал (doc assert) на 1.2.1 и в REPL:

clojure.core/assert
([x])
Macro
  Evaluates expr and throws an exception if it does not evaluate to
 logical true.

Похоже, что сообщение было добавлено в 1.3, поэтому вы можете использовать версию только с одним параметром в 1.2.

Если вы просматриваете онлайн-документацию, убедитесь, что вы читаете правильную версию.Если есть сомнения, введите (doc the-function-or-macro-name) в REPL и посмотрите документацию прямо здесь.Я пользуюсь doc гораздо чаще, чем онлайн-документы - он всегда соответствует версии, которую я использую, и в любом случае он уже у меня под рукой.

...