我正在学习Clojure并且正在乱搞REPL.因为assert,文件说
Usage: (assert x)
(assert x message)
Evaluates expr and throws an exception if it does not evaluate to
logical true.
Run Code Online (Sandbox Code Playgroud)
所以我期望(assert false "Error message")引发错误和输出"Error message".但是,它给出了
java.lang.IllegalArgumentException: Wrong number of args (4) passed to: core$assert (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
为什么它说我有四个参数,什么是正确的用法?文档assert不是太冗长.
我刚刚在1.2.1上尝试过,我得到了和你一样的行为.
然后我(doc assert)在REPL中尝试了1.2.1:
clojure.core/assert
([x])
Macro
Evaluates expr and throws an exception if it does not evaluate to
logical true.
Run Code Online (Sandbox Code Playgroud)
似乎消息是在1.3中添加的,因此您只能在1.2中使用带有一个参数的版本.
如果您正在浏览在线文档,请确保您正在阅读正确的版本.每当有疑问时(doc the-function-or-macro-name),请输入REPL并在那里查看文档.我使用doc的频率远远高于在线文档 - 它总是与我正在使用的版本保持同步,无论如何它已经在我的手指下了.