Feature #17371
closedReintroduce `expr in pat`
Description
How about reintroducing expr in pat
, as akr-san proposed in DevelopersMeeting20201026Japan.
The difference between expr => pat
and new expr in pat
is the return value of the expression.
# expr => pat
0 => a #=> void (succeeded)
0 => 1 #=> NoMatchingPatternError (failed)
# expr in pat
0 in a #=> true (succeeded)
0 in 1 #=> false (failed)
Motivation and use cases are described at [Feature #15865].
I pointed out that there is a concern that in this specification a user might overlook the pattern did not match, and changed the return value at [Feature #16355].
However, now we already have new "rightward assignment style" pattern matching syntax, so we can say that this problem is solved.
If expr in pat
is accepted, I also propose that the return value of expr => pat
on a successful match be the left-hand side value.
Because, in this case, it becomes more clear that the use of expr => pat
is assignment.