当前位置:  开发笔记 > 编程语言 > 正文

关于 - >>的来源

如何解决《关于->>的来源》经验,为你挑选了1个好方法。

我正在浏览clojure.core的来源:

(defmacro ->>
  [x & forms]
  (loop [x x, forms forms]
    (if forms
      (let [form (first forms)
            threaded (if (seq? form)
                       (with-meta `(~(first form) ~@(next form)  ~x) (meta form))
                       (list form x))]
        (recur threaded (next forms)))
      x)))

在第7行,为什么不呢

(with-meta `(~@form  ~x) (meta form))

amalloy.. 7

这几乎相当,但并不完全相同.考虑如果形式(错误)会发生什么().如上所述,此错误在编译时捕获,因为它是非法的评估(nil x).通过您提出的简化,错误将在运行时被注意到,或者可能永远不会在x没有参数的情况下发生.

撇开正确性,它对可读性也更好,因为它强调将调用表单的第一个,其余作为参数.它的实现也是一个更好的对称性->.



1> amalloy..:

这几乎相当,但并不完全相同.考虑如果形式(错误)会发生什么().如上所述,此错误在编译时捕获,因为它是非法的评估(nil x).通过您提出的简化,错误将在运行时被注意到,或者可能永远不会在x没有参数的情况下发生.

撇开正确性,它对可读性也更好,因为它强调将调用表单的第一个,其余作为参数.它的实现也是一个更好的对称性->.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有