gpt4 book ai didi

clojure - 对于 Clojure,是否有更好的 'coll' 和 'n' 位置的编码约定?

转载 作者:行者123 更新时间:2023-12-04 17:46:03 25 4
gpt4 key购买 nike

当我编写 clojure 代码时,我对何时关注 (func coll n) 感到困惑格式和 (func n coll)格式。
在 Clojure/核心中,(take n coll)用于 (nth coll n)也是对的代码。还有(reduce func n coll) , (get coll n) , 和 (drop n coll) .
在定义这些令人困惑的函数时,是否有任何关于参数类型正确位置的规则/约定?或者我应该输入 doc每次都没有意义?

最佳答案

我认为这取决于。也许核心库实际上是最好的例证。如果您查看您引用的示例:

(take n coll) 
(drop n coll)

在这两种情况下,从语义上讲,最重要的是您要获取/删除多少元素。

在类似 (get coll n) 的情况下,有一个从左到右的语义,首先有一个集合,然后才有一个索引来获取。我想 nth在这方面也是一样的。请注意,还有其他方法可以从集合中获取索引元素 - 例如,您也可以这样做:
(coll n)
这是有效的,因为像 vector 这样的 clojure 数据结构, hash-mapset都可以作为函数。 IMO,这是一种更令人困惑的方式来完成同样的事情,因为它通常更难阅读,并且没有像 (get coll n) 那样清楚地显示意图。 .

最后,我认为对调用者最直观的感觉可能是最好的,并且将使您的代码成为您代码的 future 用户最具可读性/可维护性的。

还有其他的考虑。例如,可变参数用例(例如使用 & more ),您需要首先提供所需的参数以防止歧义。然而,我仍然会首先考虑可读性,因为可变参数函数可能会带来自己的可读性问题。看到这个伟大的 post来自 Stuart Sierra 谈到了这一点。

关于clojure - 对于 Clojure,是否有更好的 'coll' 和 'n' 位置的编码约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com