Почему неявный параметр splat плюс параметр по умолчанию является неправильным синтаксисом для определения метода в Ruby 1.9? - PullRequest
4 голосов
/ 06 февраля 2012

Я хотел бы спросить, почему в Ruby-1.9.3-p0 есть сплат param1 и param2 со значением по умолчанию, как показано ниже:

def my_method(*param1, param2 = "default"); end

возвращает

SyntaxError: (irb):1: syntax error, unexpected '=', expecting ')'

Мой обходной путь - заключить в скобки param1 следующим образом:

def my_method((*param1), param2 = "default"); end

Большое спасибо

1 Ответ

7 голосов
/ 06 февраля 2012

Ruby не может проанализировать параметр по умолчанию после сплата.Если у вас есть значение по умолчанию в параметре после восклицательного знака, как Ruby узнает, что назначить переменную?

def my_method(*a, b = "foo"); end

Допустим, я затем вызываю my_method:

my_method(1, 2, 3)

Ruby имеетнет никакого способа узнать, отсутствует ли b, в этом случае вы хотите, чтобы b было foo, а a равно [1,2,3], или если b присутствует, и в этом случае вы хотите, чтобы оно было 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...