I find myself often writing code like this when dealing pop! with a Dict{A, 
B}


if !haskey(my_dict, key)
    do_something...
end

value = pop!(my_dict, key)

do_something_else...


The code above has an issue: it looks up the key in a dict twice 
unnecessary.

I know I can opt for the alternative pattern:


v = pop!(my_dict, key, nothing)

if v == nothing
    do_something...
end

value::B = v

do_something_else...

Note this piece of code is also a bit annoying, as v is no longer type 
stable. I have to think of another name "value" and apply an assignment 
with type assert. (naming variables is hard)


Probably I can extend `pop!` with pop!(f, key, v) so that I can do:

value = pop!(my_dict, key) do
   do_something...
end

do_something_else...

But using an anonymous function here seems an overkill with overhead?

What do people do in such case?

Reply via email to