正如Elixir docs所说:
...访问透明地忽略零值:
iex> keywords = [a: 1, b: 2]
iex> keywords[:c][:unknown]
nil
这似乎容易出错。我希望nil[key]
失败而不是返回nil
。
我非常确定语言开发人员选择这条路线的原因很明显。那是什么原因?
答案 0 :(得分:3)
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