Это оператор splat . Вы часто будете видеть, как он используется для разделения массива на параметры функции.
def my_function(param1, param2, param3)
param1 + param2 + param3
end
my_values = [2, 3, 5]
my_function(*my_values) # returns 10
Чаще всего он используется для принятия произвольного числа аргументов
def my_other_function(to_add, *other_args)
other_args.map { |arg| arg + to_add }
end
my_other_function(1, 6, 7, 8) # returns [7, 8, 9]
Он также работает для множественного присваивания (хотя оба эти оператора будут работать без знака восклицательного знака):
first, second, third = *my_values
*my_new_array = 7, 11, 13
Для вашего примера, эти два значения будут эквивалентны:
p *1..10
p 1, 2, 3, 4, 5, 6, 7, 8, 9, 10