学习 defn & def

看到有人问

说是一个人问他写的一些没有参数的defn能否使用 def来替换;有人回答是如果你每次返回的结果是相同的那么就用def.可以见列子。
user=>(def t0 (System/currentTimeMillis))
user=>(defn t1 [](System/currentTimeMillis))
user=> t0
1318408644243
user=> t0
1318408644243
user=>(t1)1318408717941
user=>(t1)1318408719361

其实不然,def 定义也有返回不同的值的。

(def my-fn (comp + *))

tom.jerry1> (my-fn 22)
22
tom.jerry1> (my-fn 223)
223

defn 是一个封装了fn 和def的宏,定义完后可以在命名空间中使用
宏是没有参数,是在编译的时候生成适合的逻辑处理(宏只是一种具体的逻辑处理),fn 是匿名函数,
所以可以说是defn是一个预处理的函数;
def 其实是一个var,这个是占具体的内存空间,里面可以存变量,也可以是一段执行代码   defn 其实就是存在var中的一段fn函数代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值