【问题标题】:Check if not nil in Clojure检查 Clojure 中是否为 nil
【发布时间】:2014-11-16 02:23:11
【问题描述】:

所以我正在尝试使用“一些”来实现递归函数。该函数的工作方式是返回“nil”或所需信息的向量。然后我希望'some'函数返回一堆不是零的递归调用的第一个结果。问题是“真的吗?”为向量返回 false。我似乎找不到区分 nil 和向量的函数。有什么帮助吗?

【问题讨论】:

  • 你试过`(nil? ....) ``

标签: clojure


【解决方案1】:

这个问题有点模糊,但是你可以使用nil?函数来测试一个值是否为nil。您可以使用(complement nil?) 作为some 的第一个参数来返回coll 中的第一个非零值

【讨论】:

  • 那行不通,因为 'nil?' 'nil' 返回值和向量返回值都返回 true,所以现在两者都是 true。
  • 不,在 repl 中试试。零?仅当其参数为 nil 时才返回 true。
  • 你是对的。不过我发现了我的问题:结果是'some'返回了 pred 的返回值,而不是传递给它的东西,正如我所期望的那样。我使用 '#(if (vector? %) %)' 作为 pred 代替。无论如何感谢您的帮助。
【解决方案2】:

身份

https://clojuredocs.org/clojure.core/identity

(identity x)

返回其参数。

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2013-07-06
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多