Что обозначает "*" перед аргументом?
чт, 02/08/2007 - 20:11 — spine
Когда символ "*" используется в списке формальных параметров, это значит, что любое количество аргументов может быть передано в метод, они будут собраны в массив и присвоены переменной с символом "*".
def foo(prefix, *all)
for e in all
print prefix, e, " "
end
end
foo("val=", 1, 2, 3) #=> val=1 val=2 val=3
В вызове метода "*" используется для разворачивания массива и передачи его элементов как отдельных аргументов.
a = [1, 2, 3] foo(*a)
Символ "*" может предшествовать последнему аргументу
- Левая часть множественного присваивания
- Правая часть множественного присваивания
- Определение формальных аргументов метода
- Сами аргументы в вызове метода
- В инструкции when конструкции case
Например:
x, *y = [7, 8, 9]
puts x #=> 7
puts y #=> 8
9
x, = [7, 8, 9]
puts x #=> 7
x = [7, 8, 9]
puts x #=> 7
8
9
