6-2-3 メソッド定義の書式と定義する順序を確認しよう

メソッドを定義する場合の書式

自作のメソッドを定義するにはdefendで囲み、その間に実行する処理を記述します。defの後にスペース区切りでメソッドの名前を記述します。

メソッド名には、英数字や?!などの記号が使えます。ただし、ドット(.)やイコール(=)、括弧などRubyで特殊な意味を持つ記号は使えません。

日本語のメソッド名も定義することはできますが、変数名同様あまり推奨はされません。

メソッド名の後には、括弧で引数を囲みます。引数を取らないメソッドは括弧を省略することができます。

メソッドの戻り値は、defendで囲まれた最後の処理の評価結果が返ります。return 戻り値と記述することもできますが、Rubyではreturnを省略することができます。

メソッドの定義の順序

プログラムの順次処理の性質上、自作のメソッドを使うためには、定義した後に呼び出す必要があります。

メソッドを定義する前に呼び出そうとするとNoMethodErrorが発生します。

joinupcaseメソッド

前ページ「6-2-2 自作のメソッドを定義して実際に使ってみよう」の例では、joinupcaseというメソッドを使いました。

joinメソッドは配列オブジェクトに備わっているメソッドです。引数に指定した文字列で配列の文字列を繋げた結果を戻り値として返します。

引数を省略すると単に配列の文字列を繋げた結果を返します。

upcaseメソッドは、文字列オブジェクトに備わっているメソッドです。文字列のうち、小文字を全て大文字にした結果を戻り値として返します。

文字列を配列のように扱う

文字列の先頭文字を取得するために、w[0]と記述しました。

文字列オブジェクトは、配列のようにインデックスを指定すると、先頭から順に1文字ずつ取り出すことができます。

たとえば'pen'[0]とすると、'pen'という文字列の1番目の文字である'p'が取得できます。

指定例 インデックス 先頭からの番目 取得できる文字
'pen'[0] 0 1番目 'p'
'pen'[1] 1 2番目 'e'
'pen'[2] 2 3番目 'n'
irb(main):001:0> 'pen'[0]
=> "p"
irb(main):002:0> 'pen'[1]
=> "e"
irb(main):003:0> 'pen'[2]
=> "n"