Actions
Feature #16670
closedReverse order of `expression` in `pattern` for 1-line pattern matching while it's still experimental
Status:
Closed
Assignee:
-
Target version:
-
Description
Currently the 1-line syntax for pattern matching is:
# Usage: <expression> in <pattern>
expression = {
pattern: "Example"
}
expression in {pattern: something}
# something => "Example"
Is it technically possible, and desirable to switch the order of this syntax to:
# Usage: <pattern> in <expression>
expression = {
pattern: "Example"
}
{pattern: something} in expression
# something => "Example"
?
Here are my reasons:
- It is more intuitive in English -- we are "finding a pattern in something". Finding "something in a pattern" doesn't seem to make sense.
- Assignment is happening, and this keeps assignment on the left side of the operator which feels more natural.
- It matches existing behavior with the workings of the case statement:
Understanding that a case
block evaluates each when
expression using when_expression === case_expression
makes more consistency with when_pattern in case_pattern
using the new operator.
case something
when /pattern/
end
# is equivalent to
/pattern/ === something
# This creates more parity with
case something
in {pattern: x}
# would be equivalent to
{pattern: x} in something
Please see the following discussion on Reddit: https://www.reddit.com/r/ruby/comments/favshb/27s_pattern_matching_official_docs_recently_merged/fj2c7ng/
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0