LoginSignup
1
0

More than 3 years have passed since last update.

[Ruby] ArgumentError の本質を見る

Posted at

ArgumentError

Argumentとは"引数"と言う意味です。
ArgumentErrorは「引数の数が合わないよー」というメッセージになります。
様々なケースが考えられますので、
本質的な基礎の部分を例に考えて行こうと思います。


wikiで「Rubyを対話的に実行 (REPL) するためのシェル」と紹介されている
irbを使っていきます。

下記の実引数と仮引数を用いたコードを、irbで実行

def test(number)
  puts number * number
end

test(5)

Image from Gyazo
testの引数に(5)を設定して仮引数(number)に値を渡すと、
25という結果が出力されました。


では次に、実引数なしでtestを実行してみます。
Image from Gyazo

するとエラーが発生しました。
Image from Gyazo

エラーメッセージを翻訳するとこうです。
Image from Gyazo
コンピューターさんがこう言ってます
「引数が1つあることを期待してたのに、0だったよ」
引数が一つ足りないんですね。


じゃあ今度は実引数の数を2つにして実行してみます。
Image from Gyazo

またエラーです。
Image from Gyazo

今度はこう言っていますね
「引数が1つあることを期待してたのに、2つだったよ」
一個多いよと怒っています。

実引数(5, 6)を2つ送ろうとしても、受け取る側の仮引数(number)の数が1つだと上手くいかないんですね。

まとめ

ArgumentErrorは「引数の数が合わないよー」というエラーです。
メソッドを定義してる箇所の、実引数・仮引数を確認してみましょう!

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0