Clojure语言十:fn object

来源:互联网 发布:oracle数据库基础 编辑:程序博客网 时间:2024/05/22 10:35

(fn..)可以用来创建匿名函数,比如:

user=> (fn [x] (+ 2 x))#<user$eval328$fn__329 user$eval328$fn__329@f41393>

接受一个参数x,然后加上2. 上面的调用使用fn定义了一个函数,但是并没有执行。如果要立即执行,可以加上括号和参数:

user=> ((fn [x] (+ 2 x)) 5)7


但是更多时候我们希望函数先定义,以后反复使用,可以结合def:

user=> (def f (fn [x] (+ 2 x)))#'user/fuser=> (f 1)3user=> (f 6)8

这样先定义了f函数,然后调用两次。

fn还支持变参的重载,并且实际上是实现了IFn接口。具体参考官方文档:

http://clojure.org/special_forms#fn

原创粉丝点击