Clojure编程:特殊形式与函数式编程
1. 特殊形式的多样应用
1.1 关键字参数解构
关键字参数基于映射解构构建,除了关键字,还能用字符串、数字或集合等键值类型来解构剩余参数映射。例如:
(defn foo
[& {k ["m" 9]}]
(inc k))
;= #'user/foo
(foo ["m" 9] 19)
;= 20
这里 ["m" 9] 被当作 “关键字” 参数名。不过,非关键字键类型在命名函数参数中很少用,关键字是最常见的参数键类型。
1.2 函数前置和后置条件
fn 支持对函数参数和返回值进行断言的前置和后置条件,在测试和确保函数不变性时很有价值。
1.3 函数字面量
函数字面量用于定义匿名函数,提供简洁语法。例如:
(fn [x y] (Math/pow x y))
#(Math/pow %1 %2)
fn 形式和函数字面量有以下区别:
- 无隐式 do 形式 :“常规” fn 形式会将函数体包装在隐式 do 形式中,而函数字面量需显式使用 do 形式。
超级会员免费看
订阅专栏 解锁全文
76

被折叠的 条评论
为什么被折叠?



