From: paradox.ver5@... Date: 2020-06-13T00:30:33+00:00 Subject: [ruby-core:98775] [Ruby master Feature#16960] Feedback regarding `=>` in ‘As’ Pattern Matching Issue #16960 has been reported by ParadoxV5 (���������������������������������� ���). ---------------------------------------- Feature #16960: Feedback regarding `=>` in ���As��� Pattern Matching https://bugs.ruby-lang.org/issues/16960 * Author: ParadoxV5 (���������������������������������� ���) * Status: Open * Priority: Normal ---------------------------------------- The only obstacle preventing the use of non-symbol keys in hash patterns is simply the fact that `=>` is used for both `Hash`es and ���as��� patterns. ```ruby case x in Integer => a, Float => b # Ambiguous in key: Symbol => value, **rest # Poor readability in Symbol => key => Symbol => value, **rest # ??? end ``` I recommend changing to something else. We can introduce the and operator `&`: ```ruby case array in Float & 5 & five five.eql? 5.0 #=> true end ``` And/Or, implement another operator explicitly for ���as��� patterns, say `:` (otherwise only used for *the* ternary operation) ��� ```ruby case x in Integer : a, Float : b in key: Symbol : value, **rest in Symbol : key => Symbol : value, **rest end ``` ��� which renders the pin operator `^` (and for those who *oppose*, their *unpin* operator(s)) unnecessary: expressions before it are always pinned values, and expressions after it are always `case`-`in` variable declarations. ```ruby good = 8..10 okay = 5..7 skip = 0 case x in skip : # Syntax sugar for skip : _ # skip in good : good_value puts good_value in okay : okay_value warn okay_value else : bad_value # Syntax sugar for BasicObject : bad_value raise bad_value.to_s end ``` The second option still looks like an **un**pin operator for sugary code, however, if pinning values ��� ```ruby case array in :, : *all_but_first # Syntax sugar for BasicObject : _, BasicObject : *all_but_first p all_but_first end ``` ��� are somehow preferred over declaring variables: ```ruby case array in _, *all_but_first # Current implementation p all_but_first end ``` # Regarding `rescue` We can���t change the `=>` part in `rescue`, of course; but we don���t need to. `Hash`es are not `Exception`s anyway. -- https://bugs.ruby-lang.org/ Unsubscribe: