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

上面的代碼有效。但是,Ruby參數帶可變參數的SyntaxError

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?