2014-10-08 3 views
0

Создание DSL, и мне просто интересно, есть ли способ заставить метод принять массив без размещения массива в квадратных скобках.Разрешить метод принимать массив

Например, это работает:

def foo args=[] 
    args.each { |arg| puts arg } 
end 
foo ['baz','boo','bing'] #=> 'baz','boo','bing' 

Но я хотел бы, чтобы иметь возможность передать Foo свои аргументы без квадратных скобок:

foo 'baz','boo','bing' #=> 'baz','boo','bing' 

не игра-чейнджер, просто интересно, если это может быть сделано :)

ответ

6

Да! Это называется оператором «splat». Это займет все, что осталось в массиве.

def foo(*args) 
    args.each { |arg| puts arg } 
end 

> foo 'baz','boo','bing' 
baz 
boo 
bing 
2

Вы можете сделать это, как это с оператором знак

def foo *args 
    args.each { |arg| puts arg } 
end 
foo 'baz','boo','bing' #=> 'baz','boo','bing' 
Смежные вопросы