元職人がエンジニアになるための物語ではある

元職人が建設業の事やRuby on Rails , IoT... etc...勉強したことや教えてもらったこのをメモするブログ。

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