Check if not nil in Clojure
因此,我尝试使用" some"实现递归函数。该函数的工作方式是返回" nil"或所需信息的向量。然后,我希望"某些"函数返回一堆非零的递归调用的第一个结果。问题是"真实的"吗?为向量返回false。我似乎找不到一个可以区分nil和vector的函数。有帮助吗?
问题有点模糊,但是您可以使用nil?函数测试值是否为nil。您可以将(complement nil?)用作some的第一个参数,以返回coll
中的第一个非null值
- 那是行不通的,因为"没有?"对于'nil'返回值和向量返回值都返回true,因此现在都为true。
-
不,请在repl中尝试。零?仅当其参数为nil时返回true。
-
你是对的。我发现了我的问题:结果是" some"会返回pred的返回值,而不是像我期望的那样传递给它的东西。我改用'#(if(vector(%?%)%)'作为代替。无论如何,谢谢您的帮助。
身份
https://clojuredocs.org/clojure.core/identity
返回其参数。