欢迎!请参阅 关于 页面以了解更多关于如何使用本网站的信息。
根据 doseq 的文档字符串,以下应返回 nil。
nil
user> (doseq [] "not nil") "not nil"
评论者:admay
我认为这解决了这个问题。
有一个 (do ...) 表达式在 (seq exprs) 为 nil 时运行,但该 do 表达式的返回值不一定是 nil,如果你的主体部分不是返回 nil 的东西。
(do ...)
(seq exprs)
do
评论者:mfikes
这很奇怪,因为 {{doseq}} 甚至为这种情况编了代码,鉴于其文档字符串表明绑定和过滤类似于 "for"。由于 {{for}} 要求一个或多个绑定形式,因此这引发了关于 {{(doseq [] "not nil")}} 是否是有效程序的问题。
评论者:alexmiller
测试?
这是一些测试!我认为它们适用于 doseq 的用例。我选择了类似 dotimes 的测试,因为它们非常相似。
doseq
dotimes
我从原始测试中移除了 println,转而使用 identity。这样做似乎更合适,这样测试打印输出就不会有一个随机的 'foo'。
println
identity