![]() |
1
9
正如其他人已经说过的,如果你需要做这种事情,使用列表实际上不是一个好主意。随机存取就是向量的作用。
不过,这段代码将做到这一点,尽管效率低下且笨拙。借用皮肤病:
用途:
你会得到
编辑在这种情况下,列表比向量差的原因是:
你也不必写
您也不必像引用列表那样引用向量。Clojure中的列表强烈暗示“我在这里调用函数或宏”。
矢量(以及地图、集合等)可以通过
向量在视觉上也很突出。由于广泛使用
某些情况下,我会使用数据列表:
|
![]() |
2
6
对于简单的情况,递归替换函数将为您提供所需的东西,并且会带来更多的复杂性。当事情变得更复杂时,是时候打开Clojure了。 zipper 功能:“Clojure包含纯功能, 通用树漫游和编辑 ,使用名为zipper的技术(在命名空间zip中)。” 改编自以下示例: http://clojure.org/other_libraries
这些将与嵌套的任何东西(seq'able)甚至XML一起工作 |
![]() |
3
5
它没有回答你的问题,但是如果你有向量而不是列表:
因此,如果可能,为了更好的访问行为,请避免使用有利于向量的列表。如果您必须使用各种来源的lazy seq,这当然不是什么建议… |
![]() |
4
0
您可以使用此函数并根据需要对其进行调整(嵌套列表):
|
![]() |
5
0
花生画廊的简单建议:
这可能会浪费一些性能;但是如果这是一个性能敏感的操作,那么您首先应该使用向量。 |
![]() |
Freid001 · 具有最小和最大限制的架构? 7 年前 |
![]() |
phlie · Hoplon With Castra加载后端时出错 7 年前 |
![]() |
David Furnam · Clojure从数组中获取坐标 7 年前 |
![]() |
Jeroen · 如何将惰性序列转换为映射? 7 年前 |