@josevalim I don’t believe that is true.
If you have something like this:
o = %OuterStruct{
inner: %InnerStruct{
field: 1
}
}
get_in o, [Access.key(:inner), Access.key(:field)] #returns 1
o = %OuterStruct{
inner: nil
}
get_in o, [Access.key(:inner), Access.key(:field)]
# returns
** (BadMapError) expected a map, got: nil
(elixir 1.12.3) lib/map.ex:464: Map.get(nil, :pairing, :a)
(elixir 1.12.3) lib/access.ex:459: anonymous fn/5 in Access.key/2
This happens because Access.key
returns default only for a missing key. The :inner
key is not missing, it is just set to nil
so it is passed to next accessor.