我是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)
但是现在我的功能只能接收固定数量的整数.
有没有办法同时使用这两种风格?
我正在阅读O'reilly Clojure编程书,它在其关于延迟序列的部分中说了以下内容:
延迟序列可以(尽管非常罕见)知道它的长度,因此在没有实现其内容的情况下将其作为计数结果返回.
我的问题是,这是如何完成的以及它为何如此罕见?
遗憾的是,本书未在本节中指定这些内容.我个人认为,在实现之前知道延迟序列的长度是非常有用的,例如,在同一页面中是使用函数处理的延迟文件序列的示例map.很高兴知道在实现序列之前可以处理多少文件.