小编iza*_*ban的帖子

带有关键字参数的变量函数

我是Clojure的新手,我想知道是否有办法定义一个可以这样调用的函数:

(strange-adder 1 2 3 :strange true)
Run Code Online (Sandbox Code Playgroud)

也就是说,一个可以接收可变数量的int和关键字参数的函数.

我知道我可以用这种方式用关键字参数定义一个函数:

(defn strange-adder
  [a b c & {:keys [strange]}]
  (println strange)
  (+ a b c))
Run Code Online (Sandbox Code Playgroud)

但是现在我的功能只能接收固定数量的整数.

有没有办法同时使用这两种风格?

clojure variadic-functions keyword

8
推荐指数
1
解决办法
822
查看次数

如何在不强制实现的情况下找到延迟序列的长度?

我正在阅读O'reilly Clojure编程书,它在其关于延迟序列的部分中说了以下内容:

延迟序列可以(尽管非常罕见)知道它的长度,因此在没有实现其内容的情况下将其作为计数结果返回.

我的问题是,这是如何完成的以及它为何如此罕见?

遗憾的是,本书未在本节中指定这些内容.我个人认为,在实现之前知道延迟序列的长度是非常有用的,例如,在同一页面中是使用函数处理的延迟文件序列的示例map.很高兴知道在实现序列之前可以处理多少文件.

clojure lazy-sequences

8
推荐指数
2
解决办法
1200
查看次数