为什么 take-while 返回空序列?

Why is take-while returning empty sequence?

以下行为背后的规则是什么:

user=> (take-while #(> 10 %) [2 9 4 12 3 99])
(2 9 4)
user=> (take-while #(> % 10) [2 9 4 12 3 99])
()

谢谢!

“10比这个数字大吗?”之间有很大的区别。和“这个数字大于 10 吗?”。这些分别是您编写的两个谓词,因此当然 take-while 在给定每个谓词时表现不同。

因为 take-while 在第一个 false 处停止

(take-while #(> % 10) [2 9 4 12 3 99])

所以第一次检查是错误的,然后停止并给你一个空列表。这在 https://clojuredocs.org/clojure.core/take-while 中并没有真正明确 但它暗示 例如取

(take-while #(> % 10) [ 11 15 2 9 4 12 3 99])

会输出

(11 15)