Clojure 快速突击(续)

Clojure 确实要比 Python 语义上庞大, 所以无法尽量在一篇之中收纳进来, 只得另立新篇, 也许还会有第三篇笔记. 现在开始学习函数定义

函数定义

函数用  defn 宏来定义, 函数名与参数列表之间可选的字符串是函数的注释, 相当于 Python 的函数体中第一个字符串,  这个字符串能被 (doc func-name)  列出来, Python 中是用 dir(fun_name 显示函数帮助. 不需要 return 关键字, 和 Groovy/Scala 一样最后一个表达式的值为函数的返回值, 所以函数总是有返回值(或为 nil).

和 C 语言一样, 函数必须先定义再使用, 否则要用 (declare function-names) 提前声明, 下面代码是在 Clojure 的 REPL 中执行的

提一下 Clojure 的命名规则, 变量和函数名用中划线连接的小写单词. defn- 定义的函数是私有, 只对当前名字空间可见, 比如上面的  user 名字空间. 有点像 Python 的下划线变量或函数的可见性约定. 阅读全文 >>