> RUBY – メソッド~RUBY入門〜RUBYTUTORIAL〜 – ネットワークエンジニアチュートリアル

RUBY – メソッド~RUBY入門〜RUBYTUTORIAL〜

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

undefaliasを使うことで、クラスのインタフェースはスーパークラスから独立して変更できますが、selfへの内部メソッド呼び出しによってプログラムが破損する可能性があります。

構文

undef method-name

barというメソッドを定義解除するには、次のようにします:

undef bar

前のページ⑧Ruby – ループ~RUBY入門〜RUBYTUTORIAL〜

次のページ

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:

執筆者: