为什么 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)
以下行为背后的规则是什么:
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)