Сплат в нефинальном положении

Для следующего метода

def mixed_args(a,b,*c,d) 
  puts a,b,c,d
end
p mixed_args(1,2,3,4,5)

Я получаю это сообщение об ошибке:

синтаксическая ошибка, неожиданный tIDENTIFIER, ожидание tAMPER или '&'

Не подскажете, какой информации мне не хватает?


person Benedikt Girz    schedule 25.09.2013    source источник
comment
Это не ответ,splat всегда должен быть последним элементом в списке аргументов.   -  person Arup Rakshit    schedule 25.09.2013


Ответы (1)


Вы используете Ruby 1.8. Это «расширенное» использование знаков недоступно до версии 1.9.

В Ruby 1.8 знак должен был быть последним аргументом: a,b,*c было нормально. В Ruby 1.9 они представили возможность объединять аргументы в середине списка, a,b,*c,d.

person meagar    schedule 25.09.2013
comment
какой функционал вы имеете в виду? splat один? - person Arup Rakshit; 25.09.2013
comment
Использование знаков в середине списка аргументов. Уточняющий ответ; пытаясь найти достойный источник для ссылки. - person meagar; 25.09.2013
comment
Хм... теперь это имеет смысл! - person Arup Rakshit; 25.09.2013