为什么Elixir的nil实现了Access行为?

时间:2017-06-26 08:04:13

标签: elixir

正如Elixir docs所说:

  

...访问透明地忽略零值:

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

这似乎容易出错。我希望nil[key]失败而不是返回nil

我非常确定语言开发人员选择这条路线的原因很明显。那是什么原因?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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