I'm unclear what you want the proposed function to return when the key
isn't present. The map, untouched? I think that behaviour would be a
surprise to some. I like the explicitness of `Map.get_and_update/3`.

`Map.get_and_update(map, key, fn
  nil -> map
  n -> n + 1
end)`

-- 
- Martin

tis 3 okt. 2017 kl 20:40 skrev Ary Borenszweig <[email protected]>:

> I saw it, but it's different from what I want. There are two versions:
> - get_and_update(map, key, fun): fun is called with the current value
> under key in map (*or nil if key is not present in map*) -> I don't want
> that nil, it will break my code
> - get_and_update!(map, key, fun): raises if there's no key
>
> I want something like this:
>
> ~~~
> Map.put_lazy(map, key, fun value -> value + 1 end)
> ~~~
>
> Here, the function is only invoked if key is present in map.
> `get_and_update` would invoke that function with `nil`.
>
>
>
> On Tuesday, October 3, 2017 at 3:00:43 PM UTC-3, Tallak Tveide wrote:
>>
>> https://hexdocs.pm/elixir/Map.html#get_and_update!/3
>
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/1164ddd8-de7d-4e0d-b140-63db6b6b6646%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/1164ddd8-de7d-4e0d-b140-63db6b6b6646%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAAHw6C%2BLeJdT2d%3DgRUaQNMehrKhuY8ARb1Q-Opxoti3UxpMw4g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to