Mi sono reso conto che le parentesi graffe per un hash possono essere omesse se si tratta dell'ultimo elemento di un array. Per esempio, le forme:Omissione di parentesi graffe per un hash in un array
[1, 2, 3, :a => 'A', :b => 'B']
[1, 2, 3, a: 'A', b: 'B']
sembrano identici a:
[1, 2, 3, {:a => 'A', :b => 'B'}]
[1, 2, 3, {a: 'A', b: 'B'}]
sapevo questo tipo di omissione è possibile per gli argomenti di un metodo, ma non aveva rilevato è possibile per un array . La mia comprensione di questa regola è corretta? E questo è descritto da qualche parte?
Suppongo che in teoria '[...]' sia una chiamata di metodo a un metodo che assomiglia a 'def x (* args)', quindi il comportamento ha un senso. Forse scavare il codice C della gestione letterale dell'array per vedere come viene gestito internamente. –
Non lo userei comunque come pratica di codifica. Preferisco vedere la delimitazione visuale fornita da '{' e '}', e lo dichiarerei in una revisione del codice. È un problema di manutenzione e leggibilità. –
@muistooshort Funziona anche se non è una chiamata al metodo. Questo funziona solo per la creazione di un array. – sawa