Rubyは1つの引数が渡されていることを伝えています(0にする必要があります)。私は** {}が同等であることを期待していました。私の考えはどこが誤りですか?Ruby - splatとsend()の混乱
class Test
def takenothing() end
end
def wrapper(*args, **keys, &block)
keys.delete :key
Test.new.send :takenothing, *args, **keys, &block
end
wrapper key: 'nyeh'
これは単なる正規表現ではありません。彼らはスプラットとkwsplatです。あなたのロジックによって、このメソッドは約2つの引数を渡すと文句を言うべきです。しかし、それは "1合格"と言います。どうして? –
'* args'はオプションで、' ** keys'はハッシュをキーワード引数に変換します。彼は1つの引数しか持っていないので、それはキーの一部であり、argsは空になります。 Rubyはオプションの引数については不平を言うことはありません。 – davidhu2000
しかし、彼はキーから唯一のキーを削除します。 –