2017-06-26 15 views
2

は言う:なぜElixirのnilはアクセス動作を実装していますか?エリクシール<a href="https://hexdocs.pm/elixir/Access.html" rel="nofollow noreferrer">docs</a>として

...アクセスは透過的にnilの値を無視します:

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

これは私にエラーが発生しやすいようです。私は、nilを返すよりもむしろnil[key]が失敗していると思うでしょう。

私は言語開発者がこのルートを選ぶ理由を知っています。その理由は何ですか? (。nilは原子FWIWある)

答えて

3

nil

は何がある起こるAccess動作を実装していません:Access.fetch(nil, whatever)戻り:error 3番目のパラメータとしてAccess.get/3に渡さgetwraps :error to the default value

"なぜ"がホセに対処する方が良いかというと、私が思いつくことができる唯一のアイデアは深くネストされた構造の場合にコードが単純化されるということです。

また、これは最初のレベルのマップにアクセスするためのデフォルトの動作です:

iex> %{a: 42}[:b] 
nil 
関連する問題

 関連する問題