Por que às vezes são necessários parênteses no Ruby?
Recentemente, tive uma estranheza enquanto olhava para algum código Ruby doDocumentos do Rails.
Ruby permite passar argumentos como estes exemplos:
redirect_to post_url(@post), alert: "Watch it, mister!"
redirect_to({ action: 'atom' }, alert: "Something serious happened")
Mas esse segundo caso me pareceu estranho. Parece que você deve ser capaz de passar da seguinte forma:
redirect_to { action: 'atom' }, alert: "Something serious happened"
E teria o mesmo significado com ou sem parênteses. Mas, em vez disso, você obtém:
syntax error, unexpected ':', expecting '}'
Referindo-se ao cólon apósaction
. Não sei por que estaria esperando}
lá, e por que usar parênteses mudaria isso.