在给定集合中的成员的情况下,返回集合中的下一个项目的惯用方法是什么?
例如,给定(def coll [:a :b :c :d :e :f]),又该f是使(f coll :d)回报:e?
ama*_*loy 11
通常情况下,这不是Clojure中非常重要的事情.唯一可能的实现需要对输入集合进行线性扫描,这意味着您使用了错误的数据结构来完成此任务.
相反,我们通常会尝试构建数据,以便我们需要对其执行任务.如何最好地做到这一点取决于你为什么要查找"foo之后的元素".例如,如果您一次输入一个项目并想要知道下一个项目以及当前项目,您可以编写(partition 2 1 input)以获得一系列相邻值的序列.
也就是说,你要求一个惯用的实现,但没有:成语是以不同的方式解决问题.当然,如果您认为自己处于使用正确数据结构并且只需要做一次或两次奇怪事情的特殊情况,那么自己编写循环就很简单了.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |