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がメソッド本体に表示することはできません。

undefaliasを使用することで、クラスのインターフェイスをスーパークラスから独立して変更できますが、selfへの内部メソッド呼び出しによってプログラムが壊れている可能性があることに注意してください。

構文

undef method-name

barと呼ばれるメソッドの定義を解除するには、次のようにします。

undef bar