【发布时间】: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
正如 Elixir docs 所说:
...Access 透明地忽略 nil 值:
iex> keywords = [a: 1, b: 2]
iex> keywords[:c][:unknown]
nil
这对我来说似乎很容易出错。我宁愿看到nil[key] 失败也不愿返回nil。
我很确定语言开发人员选择这条路线是有充分理由的。那是什么原因?
【问题讨论】:
标签: elixir
nil 没有实现 Access 行为(nil 是原子 FWIW。)
发生的情况是:Access.fetch(nil, whatever) 返回:error 和get wraps :error to the default value 作为第三个参数传递给Access.get/3。
“为什么”这个问题最好向 José 提出,我能想到的唯一想法是:在深度嵌套结构的情况下,这种行为可以简化代码。
此外,这是一级地图访问的默认行为:
iex> %{a: 42}[:b]
nil
【讨论】: