Ruby-methods
Ruby-メソッド
Rubyのメソッドは、他のプログラミング言語の関数と非常によく似ています。 Rubyメソッドは、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
クラスメソッド
メソッドがクラス定義の外部で定義されている場合、そのメソッドはデフォルトで_private_としてマークされます。 一方、クラス定義で定義されたメソッドは、デフォルトでパブリックとしてマークされます。 メソッドのデフォルトの可視性と_private_マークは、モジュールの_public_または_private_によって変更できます。
クラスのメソッドにアクセスするたびに、最初にクラスをインスタンス化する必要があります。 次に、オブジェクトを使用して、クラスの任意のメンバーにアクセスできます。
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ステートメント
これにより、メソッド定義がキャンセルされます。 _undef_はメソッド本体に表示できません。
_undef_および_alias_を使用することにより、クラスのインターフェイスをスーパークラスとは独立して変更できますが、selfの内部メソッド呼び出しによってプログラムが破損する可能性があることに注意してください。
構文
undef method-name
例
_bar_と呼ばれるメソッドの定義を解除するには、次のようにします-
undef bar