2016-11-17 3 views
1
def a(b: 88, c: 97) 
     puts b 
     puts c 
    end 

Приведенный выше код работает. Но,Параметры Ruby СинтаксисError с varargs

def a(b: 88, c: 97, *c) 
    puts b 
    puts c 
end 

Выдает синтаксическую ошибку. Может ли кто-нибудь указать мне правильную документацию, которая объясняет это?

+0

Что ваш код должен делать, то, что ожидаемое значение 'c' в рамках метода, когда вызывается с различными значениями? – Stefan

ответ

5

Позиционные аргументы идут первым в сигнатуре метода. Именованные аргументы продолжаются.

Это будет работать лучше, но у вас все еще есть дублирующее имя параметра, что недопустимо.

def a(*c, b: 88, c: 97) 
    puts b 
    puts c 
end 
# ~> -:1: duplicated argument name 
# ~> def a(*c, b: 88, c: 97) 
# ~>     ^

Большие ответы с дополнительной информацией: Mixing keyword with regular arguments in Ruby?

Смежные вопросы