Это оператор "сплат". Он может использоваться для разнесения массивов и диапазонов и сбора значений во время присваивания.
Здесь собраны значения в назначении:
a, *b = 1,2,3,4
=> a = 1
b = [2,3,4]
В этом примере значения во внутреннем массиве ([3,4]
one) разбираются и собираются в содержащий массив:
a = [1,2, *[3,4]]
=> a = [1,2,3,4]
Вы можете определить функции, которые собирают аргументы в массив:
def foo(*args)
p args
end
foo(1,2,"three",4)
=> [1,2,"three",4]