加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

多线程 – 绑定和绑定之间的区别

发布时间:2020-12-15 04:38:53 所属栏目:Java 来源:网络整理
导读:Clojure函数绑定和with-bindings之间有什么区别?他们似乎做了完全相同的事情,但语法略有不同. 解决方法 当您需要动态选择要绑定的内容时,with-bindings很有用.这是一个有趣的例子,我们随机选择要绑定的内容: user (def ^:dynamic a)#'user/auser (def ^:dy
Clojure函数绑定和with-bindings之间有什么区别?他们似乎做了完全相同的事情,但语法略有不同.

解决方法

当您需要动态选择要绑定的内容时,with-bindings很有用.这是一个有趣的例子,我们随机选择要绑定的内容:

user> (def ^:dynamic a)
#'user/a
user> (def ^:dynamic b)
#'user/b
user> (binding [a 1
                b 2]
        (+ a b))
3
user> (with-bindings (if (rand-nth [true false])
                       {#'a 1
                        #'b (rand-int 10)}
                       {#'a 1
                        #'b 2})
        (+ a b))
3
user> (with-bindings (if (rand-nth [true false])
                       {#'a 1
                        #'b (rand-int 10)}
                       {#'a 1
                        #'b 2})
        (+ a b))
3
user> (with-bindings (if (rand-nth [true false])
                       {#'a 1
                        #'b (rand-int 10)}
                       {#'a 1
                        #'b 2})
        (+ a b))
1

如果你尝试使用bind,那么关于不通过文字向量作为绑定表单会感到不安.

user> (binding (if (rand-nth [true false])
                 {#'a 1
                  #'b (rand-int 10)}
                 {#'a 1
                  #'b 2})
        (+ a b))
IllegalArgumentException binding requires a vector for its binding in user:138  clojure.core/binding (core.clj:1865)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读