【问题标题】:Why Elixir's nil implements Access behavior?为什么 Elixir 的 nil 实现 Access 行为?
【发布时间】:2017-06-26 16:18:41
【问题描述】:

正如 Elixir docs 所说:

...Access 透明地忽略 nil 值:

iex> keywords = [a: 1, b: 2]
iex> keywords[:c][:unknown]
nil

这对我来说似乎很容易出错。我宁愿看到nil[key] 失败也不愿返回nil

我很确定语言开发人员选择这条路线是有充分理由的。那是什么原因?

【问题讨论】:

    标签: elixir


    【解决方案1】:

    nil 没有实现 Access 行为(nil 是原子 FWIW。)

    发生的情况是:Access.fetch(nil, whatever) 返回:errorget wraps :error to the default value 作为第三个参数传递给Access.get/3

    “为什么”这个问题最好向 José 提出,我能想到的唯一想法是:在深度嵌套结构的情况下,这种行为可以简化代码。

    此外,这是一级地图访问的默认行为:

    iex> %{a: 42}[:b]
    nil
    

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多