Ruby: inyectar el problema al convertir la matriz en hash

a = [[1, 'a'],[2, 'b'],[3, 'c'], [4, 'd']]
a.inject({}) {|r, val| r[val[0]] = val[1]}

Cuando ejecuto esto, me sale un error de índice

Cuando cambio el bloque a

a.inject({}) {|r, val| r[val[0]] = val[1]; r}

Entonces funciona.

¿Cómo maneja Ruby el primer intento de inyección que no está obteniendo lo que quiero?
¿Hay una mejor manera de hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta