我是Clojure的新手,我一直在翻译我最近做的一些数据处理工作,以帮助学习.我有一个功能翻译,工作正常,而且更短,但感觉更不易读.任何人都可以建议更可读和/或更惯用的方式来处理这个问题吗?
在Python中:
def createDifferenceVector(v,startWithZero=True):
deltas = []
for i in range(len(v)):
if i == 0:
if startWithZero:
deltas.append(0.0)
else:
deltas.append(v[0])
else:
deltas.append(v[i] - v[i-1])
return deltas
Run Code Online (Sandbox Code Playgroud)
我尝试Clojure翻译:
(defn create-diff-vector [v start-zero]
(let [ext-v (if start-zero
(cons (first v) v)
(cons 0 v))]
(for [i (range 1 (count ext-v))]
(- (nth ext-v i) (nth ext-v (- i 1))))))
Run Code Online (Sandbox Code Playgroud)
可能因为我对Clojure缺乏经验而不太可读,但特别是,将元素添加到输入向量的技巧让我觉得它模糊了意图.我试过的所有没有使用前置技巧的解决方案都要长得多,而且更加丑陋.
在Clojure中,许多序列转换非常优雅,但到目前为止我发现的那些是像这样的,a)适合于通过索引而不是元素进行操作,和/或b)需要对某些元素进行特殊处理.
谢谢你的任何建议.
[2015年更新:我认为可以说 Flash快速死亡.不要去那里.不过要说,在它短暂闪耀的时刻,Flex实际上是一个非常可爱的数据技术.]
我有兴趣为iPad和iPhone开发,但我不想学习Apple的整个开发堆栈(而且很好,我肯定不想回到手动内存管理).哦,当然,我可以学到它,但我现在还没有那种对环境的承诺.我已经拥有Flex的专业经验,所以我对Adobe 将 Flash/Flex编译到iPhone和iPad 的举动很感兴趣.我的问题是:Adobe Slider的开发路径前景如何?我们是否有可能在合理的时间内公布Slider(Adobe:"Flex框架的早期移动分支预计将在2010年推出")?我们可能会看到合理的表现吗?是否有尚未明确的发展障碍?哎呀,这一切只是蒸发器吗?到目前为止,据我所知,目前的信息非常有限,但我对人们的预测感兴趣,即使他们是投机性的.