Сплат *
преобразует объект в список значений (обычно список аргументов ), вызывая его метод to_a
, поэтому *1..4
эквивалентно:
1, 2, 3, 4
Само по себе вышеприведенное недействительно. Но в квадратных скобках [*1..4]
становится:
[1, 2, 3, 4]
Это действительно.
Вы также можете написать a = *1..4
, что эквивалентно:
a = 1, 2, 3, 4
#=> [1, 2, 3, 4]
Здесь список значений становится массивом из-за Ruby неявного присвоения массива .