多线程 – 绑定和绑定之间的区别
发布时间: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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |