Ruby: injetar problema ao transformar array em hash

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

Quando eu executo isso, recebo um erro de índice

Quando eu mudar o bloco para

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

Então funciona.

Como o rubi está lidando com a primeira tentativa de injeção que não está conseguindo o que eu quero?
Existe uma maneira melhor de fazer isso?