Как сказал бы один футбольный тренер / философ-король, это то, что есть. Вот Ruby's parse.y . Особый интерес представляет эта часть :
opt_rescue : keyword_rescue exc_list exc_var then
compstmt
opt_rescue
...
| none
;
exc_list : arg_value
...
| mrhs
...
| none
;
exc_var : tASSOC lhs
...
| none
;
Объяснение
exc_list
в принципе ничего не допускает, тип исключения или (разделенная) серия исключений, таких как rescue ZeroDivisionError, LoadError
exc_var
может быть ничем или => some_variable
opt_rescue
может поэтому быть rescue
само по себе или плюс один или оба из вышеперечисленных.
Это только , указанный здесь как специальный синтаксис для назначения исключений. Единственное другое использование для =>
- для сопоставления ключ-значение .
Обратите внимание, что arg_value
и mrhs
находятся слева, а lhs
справа, что, насколько я могу судить, является единственным местом, где это происходит. Кто-то поправит меня, если я ошибаюсь, но в parse.y нет другого «обратного» назначения.