gpt4 book ai didi

clojure - 如何确定clojure中nil的含义?

转载 作者:行者123 更新时间:2023-12-02 13:37:14 25 4
gpt4 key购买 nike

例如,

> (some #{nil} #{nil 1 2 3})
nil

> (some #{} #{nil 1 2 3})
nil

我知道我可以使用

(some nil? #{nil 1 2 3})

检查零值。我暂时想不出什么好的例子。

但是一般情况下,当返回 nil 时,如何判断 nil 是表示什么都没有找到还是 nil 值被找到了?

最佳答案

nil 只是一个值,其含义取决于上下文。

它就像这方面的所有其他值一样:唯一需要注意的是它是 falsy,即在条件表达式中计为 false

需要注意的三种特殊情况:

  • nil 是用于指示空序列的返回值,例如在(seq [])
  • nil 经常用作返回值来表示 false,例如在 (或 false nil)
  • 本地图查找找不到给定键时,例如,默认返回
  • nil({:a 1} :b)

这些情况有时会导致歧义:如果是这样,那么您需要使用不同的函数。你的例子是一个很好的例子:

  • (some #{nil} #{1 2 3}) => nil(失败 - 未找到结果)
  • (some #{nil} #{nil 1 2 3}) => nil (成功 - 找到零结果!!!)

在这种情况下,您只是选择了错误的函数:您不能使用 set #{nil} 来检测 nils....相反,您可以只使用 nil? 或者您甚至可以使用替代返回值做一些奇特的事情,例如 #(get #{nil} % :not-found)

关于clojure - 如何确定clojure中nil的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com