RFC: implement #6614, destructuring in formal arguments #23337
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a fairly straightforward feature, allowing you to write e.g.
filter(((a, b),)->isodd(a), dict)
(with #23311).There are a couple edge cases:
f((x::T, y::S)) = ...
. That could be used to imply aTuple{T,S}
argument type, but destructuring works with any iterable, not just tuples. Also,for (x::T) in itr
has always impliedx::T = element
, which does conversion (and generators do the same). So we should eventually decide which behavior, if any, to use.f((x,y)::Tuple{...})
. The weird thing is thatf((x,y)::Pair)
works, since you can destructure Pairs, even though(x,y)
looks like a tuple. This is probably just something we have to live with.