Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure中的assoc:内部构件说明_Clojure_Immutability - Fatal编程技术网

clojure中的assoc:内部构件说明

clojure中的assoc:内部构件说明,clojure,immutability,Clojure,Immutability,以下是assoc的代码: (def assoc (fn assoc ([map key val] (. clojure.lang.RT (assoc map key val))))) clojure.lang.RT的含义是什么 在向量/映射上调用assoc有多复杂 访问由assoc创建的结构的复杂性是什么 clojure.lang.RT是clojure的主要运行时类。它拥有构成语言核心的大部分方法 assoc是所有关联数据结构的O(1),包括向量和映射array map对于前几个项开始

以下是assoc的代码:

(def assoc
 (fn assoc
   ([map key val] (. clojure.lang.RT (assoc map key val)))))
  • clojure.lang.RT
    的含义是什么

  • 在向量/映射上调用
    assoc
    有多复杂

  • 访问由
    assoc
    创建的结构的复杂性是什么

  • clojure.lang.RT
    是clojure的主要运行时类。它拥有构成语言核心的大部分方法

  • assoc
    是所有关联数据结构的O(1),包括向量和映射
    array map
    对于前几个项开始是线性的,然后将其自身提升为一个
    hash map
    ,因此它也是O(1)。当然,如果需要,您可以使用非O(1)的东西实现关联接口

  • 从技术上讲,通过调用另一个地图上的
    assoc
    创建的地图或向量中的项目的访问时间是O(log32 N)。因为这些数据结构在~2^32个项目的大小上有一个上限,所以最大树深度为6,这实际上是恒定的时间


  • Clojure的关联数据结构在空间中都是O(nLog n)(因为它们是树)。

    我试图了解
    assoc
    如何在地图上修改现有条目?你知道我在哪里可以找到它的材料吗?我想这一个(特别是20分钟)从第二个开始