Come potrebbe dire qualche allenatore di calcio/re filosofo, è quello che è. Ecco Ruby's parse.y. Di particolare interesse è this part:
opt_rescue : keyword_rescue exc_list exc_var then
compstmt
opt_rescue
...
| none
;
exc_list : arg_value
...
| mrhs
...
| none
;
exc_var : tASSOC lhs
...
| none
;
Spiegazione
exc_list
permette praticamente nulla, un tipo di eccezione, o un (splatted) serie di eccezioni come rescue ZeroDivisionError, LoadError
exc_var
può essere nulla o => some_variable
opt_rescue
può quindi essere rescue
da solo o più uno o entrambi i precedenti.
È solo elencato qui come sintassi speciale per l'assegnazione di eccezioni. L'unico altro uso per =>
è per key-value association.
Si noti inoltre che arg_value
e mrhs
sono sul lato sinistro e lhs
si trova sul lato destro, che è quanto posso dire l'unico posto in cui ciò si verifica. Qualcuno mi corregga se sbaglio qui, ma non c'è nessun altro incarico "all'indietro" in parse.y.
Vuoi dire 'rescue => e'? 'raise => e' non è un Ruby valido. –
Siamo spiacenti. 'rescue => e' – steveyang
No, è un costrutto sintattico. Vedi http://stackoverflow.com/questions/9669128/ruby-rescue-like-syntax#comment12281753_9669128, mi chiedo perché questo venga chiesto all'improvviso. –