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

上記のコードが動作します。しかし、Rubyのパラメータ構文エラーの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?

関連する問題