2016-08-26 1 views
0

** kwargsにキー(キー値)として数値を渡す方法は?言い換えれば、なぜ数字が** kwargsにキー(キー値)として渡せないのですか?ここではエラーがあります:** kwargsへのキー(キー値)としてのRubyのパス番号

編集:Pythonで

def func(**kwargs) 
puts kwargs.class 
p kwargs 
end 

func(a={:alpha => 1, :beta => 2, :gamma => 3}) 
# wrong number of arguments (1 for 0) (ArgumentError) 
func(n = {1 => 'alpha', 2 => 'beta', 3 => 'gamma'}) 

、これは動作します:

def func(**kwargs):  
     print(type(kwargs).__name__) 
     print(kwargs) 

func(a={'alpha': 1, 'beta': 2, 'gamma': 3}) 
func(n = {1: 'alpha', 2: 'beta', 3: 'gamma'}) 

助けてください。

答えて

2

kwargsから意味:あなたが唯一のキーとしてシンボルを渡すことができますルビーの場合K EY ORDワットrguments

。だから、そのようなことは動作しません

を(何かがあるのなら、私を修正してください):

func("a" => "foo") 
func(1 => "bar") 
func(Object.new => "baz") 

これらのすべてのハッシュを作成し、最初の位置引数として関数に渡します。しかし、あなたのメソッドには位置パラメータはありません。したがって、エラー。

にだけ使用することができます。

func(a: "this") 
func(whatever: Object.new) 
+0

はさらにそれを改善しました:) –

+0

ありがとう!よく見える – siegy22

+0

実際には、あなたの答えは良いです。 :) –

関連する問題