Contents
RUBY – メソッド~RUBY入門〜RUBYTUTORIAL〜
Rubyのメソッドは他のプログラミング言語の関数と非常によく似ています。Rubyメソッドは、1つ以上の反復可能な文を1つの単位にまとめるために使用されます。
メソッド名は、小文字で始まる必要があります。メソッド名を大文字で始めると、Rubyは定数であると考えることがあるので呼び出しを間違ってしまうことになります。
構文
def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr.. end
こんな感じで定義できます
def method_name expr.. end
例としてしてはこんな感じです
def method_name (var1, var2) expr.. end
パラメータのデフォルト値を設定することができます。このパラメータは、必要なパラメータを渡さずにメソッドが呼び出された場合に使用されます。
def method_name (var1 = value1, var2 = value2) expr.. end
単純なメソッドを呼び出すときは、次のようにメソッド名だけを記述します。
method_name
ただし、パラメータを使用してメソッドを呼び出す場合は、メソッド名をパラメータとともに記述します(たとえば、
method_name 30, 50
パラメータでメソッドを使用する際の最も重要な欠点は、そのようなメソッドを呼び出すたびにパラメータの数を覚えておく必要があることです。たとえば、メソッドが3つのパラメータを受け入れ、2つだけを渡すと、Rubyはエラーを表示します。
例
#!/usr/bin/ruby def test(a1 = "Ruby", a2 = "Perl") puts "The programming language is #{a1}" puts "The programming language is #{a2}" end test "C", "C++" test
このようになります
The programming language is C The programming language is C++ The programming language is Ruby The programming language is Perl
メソッドからの戻り値
Rubyのすべてのメソッドはデフォルトで値を返します。この戻り値は、最後のステートメントの値になります。例えば -
def test i = 100 j = 10 k = 20 end
このメソッドが呼び出されると、最後に宣言された変数kが返されます。
Ruby returnステートメント
Ruby のreturn文は、Rubyメソッドから1つ以上の値を返すために使用されます。
構文
return [expr[`,' expr...]]
3つ以上の式が指定された場合、これらの値を含む配列が戻り値になります。式が与えられていなければ、nilが戻り値になります。
例
return OR return 12 OR return 1,2,3
この例を見てください –
#!/usr/bin/ruby def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var
これにより、次の結果が生成されます。
100 200 300
可変数のパラメータ
2つのパラメータを取るメソッドを宣言したとします。このメソッドを呼び出すと、2つのパラメータを渡す必要があります。
しかしRubyでは、可変数のパラメータで動作するメソッドを宣言することができます。これのサンプルを見てみましょう –
#!/usr/bin/ruby def sample (*test) puts "The number of parameters is #{test.length}" for i in 0...test.length puts "The parameters are #{test[i]}" end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"
このコードでは、1つのパラメータテストを受け入れるメソッドサンプルを宣言しています。ただし、このパラメータは可変パラメータです。つまり、このパラメータは任意の数の変数を取り込むことができます。したがって、上記のコードは次の結果を生成します –
The number of parameters is 3 The parameters are Zara The parameters are 6 The parameters are F The number of parameters is 4 The parameters are Mac The parameters are 36 The parameters are M The parameters are MCA
クラスメソッド
メソッドがクラス定義の外で定義されると、そのメソッドはデフォルトでプライベートとしてマークされます。一方、クラス定義で定義されたメソッドは、デフォルトでpublicとしてマークされます。デフォルトの可視性およびメソッドのプライベートマークは、モジュールの公開または非公開によって変更できます。
クラスのメソッドにアクセスする場合は、まずそのクラスをインスタンス化する必要があります。次に、オブジェクトを使用して、クラスの任意のメンバーにアクセスできます。
Rubyは、クラスをインスタンス化せずにメソッドにアクセスする方法を提供します。クラスメソッドがどのように宣言されアクセスされているかを見てみましょう。
class Accounts def reading_charge end def Accounts.return_date end end
メソッドreturn_dateの宣言を参照してください。クラス名の後にピリオドが続き、メソッド名が続きます。このクラスメソッドには、次のように直接アクセスできます。
Accounts.return_date
このメソッドにアクセスするには、Accountsクラスのオブジェクトを作成する必要はありません。
Rubyエイリアスステートメント
メソッドまたはグローバル変数にエイリアスを与えます。メソッド本体内でエイリアスを定義することはできません。メソッドのエイリアスは、メソッドがオーバーライドされている場合でも、メソッドの現在の定義を保持します。
番号付きグローバル変数($ 1、$ 2、…)のエイリアスを作成することは禁止されています。組み込みのグローバル変数をオーバーライドすると深刻な問題が発生する可能性があります。
構文
alias method-name method-name alias global-variable-name global-variable-name
例
alias foo bar alias $MATCH $&
ここではbarのfooエイリアスを定義し、$ MATCHは$&
Ruby undef Statement
これにより、メソッド定義が取り消されます。undefがメソッド本体に表示することはできません。
undefとaliasを使うことで、クラスのインタフェースはスーパークラスから独立して変更できますが、selfへの内部メソッド呼び出しによってプログラムが破損する可能性があります。
構文
undef method-name
例
barというメソッドを定義解除するには、次のようにします:
undef bar
前のページ⑧Ruby – ループ~RUBY入門〜RUBYTUTORIAL〜
次のページ