Ruby-メソッド
Rubyメソッドは、他のプログラミング言語の関数と非常によく似ています。Rubyメソッドは、1つ以上の繰り返し可能なステートメントを1つのユニットにバンドルするために使用されます。
メソッド名は小文字で始める必要があります。メソッド名を大文字で始めると、Rubyはそれが定数であると見なす可能性があるため、呼び出しを誤って解析する可能性があります。
メソッドは、呼び出す前に定義する必要があります。そうしないと、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 25, 30
パラメータ付きのメソッドを使用することの最も重要な欠点は、そのようなメソッドを呼び出すたびにパラメータの数を覚えておく必要があることです。たとえば、メソッドが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 = 0
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
クラスメソッド
メソッドがクラス定義の外部で定義されている場合、そのメソッドはデフォルトでプライベートとしてマークされます。一方、クラス定義で定義されたメソッドは、デフォルトでパブリックとしてマークされています。メソッドのデフォルトの可視性とプライベートマークは、モジュールのパブリックまたはプライベートによって変更できます。
クラスのメソッドにアクセスするときはいつでも、最初にクラスをインスタンス化する必要があります。次に、オブジェクトを使用して、クラスの任意のメンバーにアクセスできます。
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は$&のエイリアスです。
Rubyundefステートメント
これにより、メソッド定義がキャンセルされます。undefがメソッド本体に表示することはできません。
undefとaliasを使用することで、クラスのインターフェイスをスーパークラスから独立して変更できますが、selfへの内部メソッド呼び出しによってプログラムが壊れている可能性があることに注意してください。
構文
undef method-name
例
barと呼ばれるメソッドの定義を解除するには、次のようにします。
undef bar