Rubyでメソッドを作成!def 〜 end内に処理を書いてみよう
  • facebookページ
  • twitterページ
  • 2020.12.18

    Rubyでメソッドを作成!def 〜 end内に処理を書いてみよう

    Rubyに限らずプログラミング言語では、ある程度コードが長くなってくると、処理の単位ごとにメソッドを作成してコードを分離します。

    この記事では、Rubyでメソッドを作成する方法や、作成したメソッドを呼び出す方法について解説していきます。

    長くなりすぎたコードをメソッドに分離して、可読性の高いコードを目指しましょう。

    「def」でメソッドを作成

    Rubyでは、次の構文のように defendキーワード内に処理を記述してメソッドを定義します。

    定義したメソッドを呼び出すときは、メソッド名と括弧内に引数を指定して呼び出します。

    ポテパンダの一言メモ

    引数がないメソッドを呼び出す場合、括弧の指定は省略できます。

    メソッド定義のサンプルコード

    引数あり・なしなど、実際にサンプルコードを確認しながら、メソッドの定義方法を見ていきましょう。

    引数なしのメソッドの例

    引数が1つのメソッド

    引数が2つのメソッド

    戻り値があるメソッド

    メソッドで処理した結果を、戻り値として返す場合もあるでしょう。

    JavaやC言語などでは、メソッドの宣言時に public int say() {...}のように、戻り値の型を指定する必要がありますが、Rubyでは戻り値の型をメソッドで宣言する必要がありません。

    処理の中で、 return のように戻り値を返す処理を書くだけで、戻り値があるメソッドになります。

    デフォルト値を指定した引数

    メソッドを定義するとき、引数にデフォルト値を指定できます。
    デフォルト値を指定しておくと、該当の引数を省略してメソッドが呼び出された場合、デフォルト値が引数の値に設定されます。

    デフォルト値を指定した引数のメソッドは、次のように宣言します。

    このように、引数を省略してメソッドを呼び出した場合はデフォルトが使用され、引数を指定した場合は、指定した値が使用されていることが分かります。

    ポテパンダの一言メモ

    デフォルト値の指定がない引数は、引数を省略してメソッドを呼び出すことはできません。
    前述のサンプルコードを、引数を指定せず sample_methodのように呼び出すと、次のようなエラーが発生します。

    wrong number of arguments (given 0, expected 1..2) (ArgumentError)

    可変長引数 (*args)

    メソッドの引数の前に *をつけると、可変長引数となります。

    可変長引数は、メソッドの引数残りをすべて配列で受け取ることができる引数で、メソッドに1つだけ宣言できます。

    次のコードをご覧ください。

    このように、2つ目以降の引数で指定された値を、可変長引数は配列で受け取ることができます。

    キーワード引数

    Ruby 2.0以降で使用できる「キーワード引数」は、引数を キーワード: デフォルト値のように宣言できます。

    キーワード引数の宣言や、呼び出し時の引数の渡し方は次のとおりです。

    このように、メソッドの呼び出し側も キーワード: の形式で引数を指定するため、どの名前の引数にどの値が渡っているかが一目で分かります。

    通常の引数とキーワード引数の併用

    通常の引数と、キーワード引数を1つのメソッドに同時に宣言することも可能です。

    キーワード引数が最後になるようにメソッドを定義しないとエラーになるため、次のコードのように、通常の引数→キーワード引数の順に引数を定義します。

    ハッシュで引数を受け取る

    キーワード引数はRuby 2.0以降でしか使えないため、それ以前のバージョンで、キーと値で引数を受ける場合は「ハッシュ引数」を使います。

    ハッシュ引数は、引数の前に **を付けて宣言します。

    ハッシュ引数は、Ruby 2.0以降でも使用できますが、メソッドの宣言を見ただけで、どんなキーワードの引数があるか分かりづらいため、基本的にはキーワード引数を使用したほうがよいでしょう。

    まとめ

    Rubyの「def」キーワードを使って、メソッドを作成する方法を紹介してきました。

    実際のシステム開発でも、メソッドやクラスなどを複数作成して1つのシステムを完成させることが普通であるため、メソッドの作成方法や、キーワード引数、可変長引数などについて理解しておくようにしましょう。

    【関連記事】
    【Rubyの基礎】インスタンス変数の基本とattr_accessorの使い方



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE