请分享您的想法,参加2024年Clojure状况调查!

欢迎!请查看关于页面以了解更多关于如何工作的信息。

+2
Clojure

some-fn的一些可变参数在无匹配时返回false,其他则返回nil。我建议返回值应该始终为nil,就像some一样——而some-fn就是它的展开。

user=> ((some-fn identity identity identity) false)
false
user=> ((some-fn identity identity identity identity) false)
nil

已记录: https://clojure.atlassian.net/browse/CLJ-2634

2 答案

0
 
最佳答案

该函数不是一个谓词(不以?结尾),文档字符串中非常清楚地提到了“逻辑真”和“逻辑假”。所以不会修复。

0

这难道不是一个重复的问题吗? [链接](https://ask.clojure.org/index.php/10366/some-has-different-short-circuiting-when-using-predicates)已经固定在 Clojure 1.11 Alpha 2。

by
不,我不这么认为。

   $ clj -Sdeps \
       '{:deps
        {org.clojure/clojure
         {:mvn/version "1.11.0-alpha2"}}}'
   Clojure 1.11.0-alpha2
   user=> *clojure-version*
   {:major 1, :minor 11, :incremental 0, :qualifier "alpha2"}
   user=> ((some-fn identity identity identity) false)
   false
   user=> ((some-fn identity identity identity identity) false)
   nil
...