ruby 引数の渡し方
変数を使って、他のメソッドで引数を渡す時に順番を間違えたせいで、エラーがでた。 何を勘違いしていたのだろう
ダメだった方 def hoge aaa = 1 bbb = 2 ccc = 3 hogehoge(aaa, bbb, ccc) end def hogehoge(bbb, aaa, ccc) puts aaa == 1 → false puts bbb == 2 → false puts ccc == 3 → ture end
引数の中の変数名がそのまま値として返ってくると勘違いしていた。
受け取る側のhogehoge(bbb, aaa, ccc)
の第一引数(bbb)には 2
、第二引数(aaa)には 1
、第三引数(ccc)には 3
が入っていると勘違いしていた。
実際は渡した側が hoge(aaa, bbb, ccc)
で渡していたので、hogehoge(bbb, aaa, ccc)にしたところで
第一引数(bbb)には 1
第二引数(aaa)には 2
第三引数(ccc)には 3
が入ってくる。
正しい方 def hoge aaa = 1 bbb = 2 ccc = 3 hogehoge(aaa, bbb, ccc) end def hogehoge(aaa, bbb, ccc) puts aaa == 1 → true puts bbb == 2 → true puts ccc == 3 → true end