正如 Elixir文档所说:
...Access 透明地忽略 nil 值:
iex> keywords = [a: 1, b: 2]
iex> keywords[:c][:unknown]
nil
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很容易出错。我宁愿看到nil[key]失败也不愿回来nil。
我很确定语言开发人员选择这条路线是有充分理由的。那是什么原因呢?
nil不实现Access行为(nil是一个原子 FWIW。)
发生的情况是:Access.fetch(nil, whatever)返回:error并get 包装:errorAccess.get/3到作为第三个参数传递的默认值。
问题 \xe2\x80\x9cwhy\xe2\x80\x9d 最好向 Jose\xcc\x81 提出,我唯一能想到的是:这种行为在深度嵌套结构的情况下简化了代码。
\n\n此外,这是第一级地图访问的默认行为:
\n\niex> %{a: 42}[:b]\nnil\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |