Звездочка в списке параметров блока - PullRequest
3 голосов
/ 15 сентября 2010

В Ruby у меня есть код, подобный следующему

foo { |x, y| puts y }

Поскольку компилятор / интерпретатор продолжает предупреждать меня о неиспользуемой переменной X, я заменил x на '*', и компилятор перестал жаловаться.(Я не знаю, почему я решил, что * был лучшим выбором ... Это просто произошло ...)

foo { |*, y| puts y }

Что это делает именно?И есть ли побочные эффекты?

1 Ответ

4 голосов
/ 15 сентября 2010

Звездочка в этом контексте называется оператором "splat". Это означает, что вы можете передать несколько параметров вместо них, и блок увидит их как массив.

Я не уверен, как и почему он работает без имени переменной после него (например, foo { |*x, y| puts y }). Я предполагаю, что это означает, что блок игнорирует все параметры, кроме последнего, который он печатает.

...