Actions
Feature #16355
closedRaise NoMatchingPatternError when `expr in pat` doesn't match
Status:
Closed
Assignee:
-
Target version:
-
Description
Currently, single line pattern matching(expr in pat
) returns true or false.
[1, 2, 3] in [x, y, z] #=> true (with assigning 1 to x, 2 to y, and 3 to z)
[1, 2, 3] in [1, 2, 4] #=> false
I think expr in pat
should raise an exception when it doesn't match.
Because if a user doesn't check the return value of expr in pat
, matching failure occurs implicitly and it may cause problems in subsequent processes.
expr in [0, x] # A user expects it always matches, but if it doesn't match...
...
(snip)
...
x.foo #=> NoMethodError (undefined method `foo' for nil:NilClass)
I also propose that expr in pat
returns the result of expr
if it matches.
It is similar to assignment.
x, y, z = 1, 2, 3 #=> [1, 2, 3]
[1, 2, 3] in [x, y, z] #=> [1, 2, 3]
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0