Vector 参考文献的Clojure向量

Vector 参考文献的Clojure向量,vector,clojure,ref,Vector,Clojure,Ref,创建不同参考向量的最简单方法是什么 使用(重复5(ref nil))将返回一个列表,但它们都将引用相同的ref: user=> (repeat 5 (ref nil)) (#<Ref@16ef71: nil> #<Ref@16ef71: nil> #<Ref@16ef71: nil> #<Ref@16ef71: nil> #<R ef@16ef71: nil>) 好吧,这很恶心,但它很有效: user=> (map (fn

创建不同参考向量的最简单方法是什么

使用
(重复5(ref nil))
将返回一个列表,但它们都将引用相同的ref:

user=> (repeat 5 (ref nil))
(#<Ref@16ef71: nil> #<Ref@16ef71: nil> #<Ref@16ef71: nil> #<Ref@16ef71: nil> #<R
ef@16ef71: nil>)

好吧,这很恶心,但它很有效:

user=> (map (fn [_] (ref nil)) (range 5))
(#<Ref@27147d: nil> #<Ref@b248c8: nil> #<Ref@c86116: nil> #<Ref@5e06ef: nil> #<Ref@19719f: nil>)
user=>(映射(fn[u](ref nil))(范围5))
(# # # # #)
它返回一个LazySeq,因此如果您想要/需要一个向量,那么只需使用:

user=> (vec (map (fn [_] (ref nil)) (range 5)))
[#<Ref@5bf9cf: nil> #<Ref@6dbfb0: nil> #<Ref@43f787: nil> #<Ref@2fe9bf: nil> #<Ref@9b1e15: nil>]
user=>(vec(map(fn[u1;](ref nil))(范围5)))
[# # # # #]
用户>(重复文档)
-------------------------
clojure.core/重复
([f])
接受一个无参数的函数,可能有副作用,并返回一个无穷大
对它的延迟调用序列
无
用户>(重复5次(参考零)))
(# # # # #)
我们
然后换行(vec(重复5次(参考无)))
user=> (vec (map (fn [_] (ref nil)) (range 5)))
[#<Ref@5bf9cf: nil> #<Ref@6dbfb0: nil> #<Ref@43f787: nil> #<Ref@2fe9bf: nil> #<Ref@9b1e15: nil>]
user> (doc repeatedly)
-------------------------
clojure.core/repeatedly
([f])
  Takes a function of no args, presumably with side effects, and returns an infinite
  lazy sequence of calls to it
nil

user> (take 5 (repeatedly #(ref nil)))
(#<Ref@1f10a67: nil> #<Ref@1e2161d: nil> #<Ref@1a034d: nil> #<Ref@1cee792: nil> #<Ref@c5577c: nil>)
us