Clojure 中的惯用语:(drop 1 str)还是(rest str)?

Posted

技术标签:

【中文标题】Clojure 中的惯用语:(drop 1 str)还是(rest str)?【英文标题】:Idiomatic in Clojure: (drop 1 str) or (rest str)? 【发布时间】:2011-08-02 17:27:49 【问题描述】:

这里是 Clojure 的简单问题。处理字符串时哪个更惯用?在处理其他数据类型时哪个更惯用?哪个效率更高?

(drop 1 str)

(rest str)

【问题讨论】:

【参考方案1】:

无论你在处理什么,rest 都会更有效率,但差异会微不足道,以至于无趣。

确保您知道自己想要rest 还是next,因为在某些情况下它很重要。 rest 比较懒惰,而且可能更经常是正确的,但是如果你在需要 next 时使用 rest,结果可能很难追踪。

对于字符串......都不行!使用内置子字符串运算符subs

user> (subs "hears" 1)
"ears"

rest 很好,但它会产生一个字符序列而不是字符串;通常你会发现一个字符串更容易处理,而且很简单,可以稍后再将它转换成一个字符序列。

【讨论】:

droplasy 一样吗?还是drop 更像next

以上是关于Clojure 中的惯用语:(drop 1 str)还是(rest str)?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Clojure 中的集合进行递归的惯用方式

Clojure 中的惯用错误处理

clojure 中的惯用配置管理?

从clojure中的普通lisp替换(null x)函数的惯用方法

惯用的 Clojure 函数别名

Clojure - 1 个函数的 2 个版本。哪个更惯用?