Me di cuenta de que las llaves para un hash se pueden omitir si es el último elemento de una matriz. Por ejemplo, las formas:Omisión de llaves para un hash en una matriz
[1, 2, 3, :a => 'A', :b => 'B']
[1, 2, 3, a: 'A', b: 'B']
parecen ser idénticos a:
[1, 2, 3, {:a => 'A', :b => 'B'}]
[1, 2, 3, {a: 'A', b: 'B'}]
sabía que este tipo de omisión es posible que los argumentos de un método, pero no había observado que es posible para una matriz . ¿Mi comprensión de esta regla es correcta? Y, ¿esto está descrito en alguna parte?
Supongo que, en teoría, '[...]' es una llamada a un método que se parece a 'def x (* args)', por lo que el comportamiento tiene algún sentido. Tal vez desenterrar la matriz de manejo literal de código C para ver cómo se maneja internamente. –
No lo usaría como una práctica de codificación. Prefiero ver el delimitado visual provisto por '{' y '}', y lo expresaré en una revisión de código. Es un problema de mantenimiento y legibilidad. –
@muistooshort Funciona incluso si no se trata de una llamada a un método. Esto funciona solo para crear una matriz. – sawa