I'd rather have it be correct than incorrect and fast so I fixed it first. I also just don't understand the rationale for the method existing in the first place. If you pop something from a set you should get that value back. What use is supplying a default? If you just want to remove the value unconditionally, you can do delete!(s, v).
On Fri, Oct 23, 2015 at 12:38 PM, Matt <[email protected]> wrote: > Thanks! > I thought it was a more efficient version than > if key in x > pop!(x, key) > end > So yeah this method is not really useful if it is actually the same. > > I'm curious: isn't there some inefficiency in first testing for the key > and then popping it out? > > On Friday, October 23, 2015 at 11:32:42 AM UTC-4, Stefan Karpinski wrote: >> >> Fixed: >> https://github.com/JuliaLang/julia/commit/4164572c53b7c18888ddb104a196d87558576031 >> >> On Fri, Oct 23, 2015 at 10:51 AM, Stefan Karpinski <[email protected]> >> wrote: >> >>> It's also a little unclear to me what this method is useful for. >>> >>> On Fri, Oct 23, 2015 at 8:53 AM, Stefan Karpinski <[email protected]> >>> wrote: >>> >>>> Ah, this is a bug in that pop! method. I'm working on a fix. >>>> >>>> On Fri, Oct 23, 2015 at 8:42 AM, Matt <[email protected]> wrote: >>>> >>>>> I want to check if a key is in a set, and pop! it if it is the case. >>>>> >>>>> >>>>> 1. In order to do that, I can rely on a try / catch statement (i.e. >>>>> try pop!(x, key)) or a default key (i.e. pop!(x, key, nothing)). Is one >>>>> preferable to the other in term of speed? >>>>> >>>>> 2.. pop!(x, key, nothing) returns nothing even if key is in x. Is this >>>>> expected? >>>>> >>>>> >>>>> nothing == pop!(Set(1:2), 2, nothing) >>>>> >>>>> true >>>>> >>>>> >>>>> >>>> >>> >>
