Sto imparando Ruby e ho appena acquisito alcune informazioni su array e intervalli. Mi sono imbattuto in qualcosa sulle fette che, mentre a prima vista ha un senso, mi confonde un po 'quando ci guardo più a fondo.Ruby: L'intervallo è vuoto, ma l'affettatura produce elementi
IRB afferma che (2..-1).to_a
è un array vuoto, ovvero nessun valore nell'intervallo, giusto?
Ma se uso lo stesso intervallo in [:a, :b, :c, :d, :e][2..-1]
, torno [:c, :d, :e]
anziché un array vuoto.
Ora, sono a conoscenza del fatto che -1 rappresenta l'ultimo elemento dell'array, quindi ha senso che ciò che è stato scelto, sia stato fatto. Ma se l'intervallo stesso fosse vuoto, come viene selezionato qualcosa?
Per riferimento futuro, qual è il stella in '* (2 ..- 1) .to_a' per? – cHao
che sarebbe l'operatore "splat". – Peter
Più precisamente: 'pippo ([1,2,3])' chiama 'pippo' con un argomento (lista). 'foo (* [1,2,3])' lo chiama con tre: è equivalente a 'foo (1,2,3)'; la lista viene decostruita e i suoi elementi schizzano sulla chiamata di funzione. – Amadan