Rubyのメソッド
Rubyのメソッドは、他のプログラミング言語の関数に似ています。 1つのユニットに1以上の重複文を束ねるためのRubyの方法。
メソッド名は小文字で開始する必要があります。 あなたはメソッド名の先頭として大文字である場合、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
パラメータ最大の欠点を使用する方法は、メソッドを呼び出すときに、パラメータの数を覚えておく必要があります。 たとえば、あなたは2つだけ引数を渡す3パラメータ法を受け入れる1であれば、Rubyはエラーが表示されます。
例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test(a1="Ruby", a2="Perl") puts "编程语言为 #{a1}" puts "编程语言为 #{a2}" end test "C", "C++" test
上の例の出力は実行します。
编程语言为 C 编程语言为 C++ 编程语言为 Ruby 编程语言为 Perl
メソッドの戻り値
Rubyは各メソッドは、デフォルト値を返します。 この値は、最後の文で返された値です。 例えば:
def test i = 100 j = 10 k = 0 end
このメソッドを呼び出す場合、変数kの最終的な宣言を返します。
Rubyのreturn文
return文でRubyはRubyのメソッドから1つまたは複数の値を返すために使用されます。
文法
return [expr[`,' expr...]]
以上の二つの式が与えられた場合、これらの値を含む配列が戻り値になります。 何の式が指定されていない場合、nilが返り値となります。
例
return 或 return 12 或 return 1,2,3
次の例を考えてみます。
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var
上の例の出力は実行します。
100 200 300
可変数の引数
のは、あなたがこのメソッドを呼び出すときに、あなたはまた、2つのパラメータを渡す必要があり、二つの引数を取るメソッドを宣言しましょう。
しかし、Rubyはあなたが可変数のパラメータを宣言することができます。 それでは、次の例を見てみましょう:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def sample (*test) puts "参数个数为 #{test.length}" for i in 0...test.length puts "参数值为 #{test[i]}" end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"
このコードでは、サンプルのメソッドを宣言している、パラメータ・テストを受け入れます。 しかし、このパラメータは可変パラメータです。 このパラメータは、変数の異なる数で提供されてもよいことを意味します。 上の例の出力は実行します。
参数个数为 3 参数值为 Zara 参数值为 6 参数值为 F 参数个数为 4 参数值为 Mac 参数值为 36 参数值为 M 参数值为 MCA
クラスメソッド
ときに外部、クラスデフォルトで定義されているメソッドのメソッドは、 プライベートとしてマーク。メソッドがクラスで定義されている場合一方、デフォルトはpublicとしてマークされます。
可視性とプライベートタグのデフォルトの方法は、パブリックまたはプライベートにモジュール(モジュール)を介して変更することができます。
あなたはクラスメソッドにアクセスしたいときは、最初のクラスをインスタンス化する必要があります。 次に、オブジェクトを使用して、あなたはクラスの任意のメンバーにアクセスすることができます。
Rubyはインスタンスメソッドなしでアクセスする方法を提供します。 のは、クラスメソッドを宣言し、アクセスする方法を見てみましょう:
class Accounts def reading_charge end def Accounts.return_date end end
我々はすでにどのようにメソッドのRETURN_DATE文を知っています。 これは、宣言にドットの後にメソッド名が続くドット、続いて、クラス名の後にあります。 次のように、直接、クラスメソッドにアクセスすることができます。
Accounts.return_date
このメソッドにアクセスするには、オブジェクトクラスのアカウントを作成する必要はありません。
Rubyのエイリアスステートメント
この文は、別名からのメソッドまたはグローバル変数として使用されています。 別名は、メソッド本体内で定義することはできません。 メソッドがオーバーライドされた場合でも、別名メソッドは、メソッドの現在の定義を維持します。
エイリアスからグローバル変数($ 1、$ 2、...)の数が禁止されています。 組み込みのグローバル変数は、深刻な問題を引き起こす可能性があります書き換え。
文法
alias 方法名 方法名 alias 全局变量 全局变量
例
alias foo bar alias $MATCH $&
ここでは、fooは$&$ MATCHのエイリアスを定義するには、バーするための別名を定義しています。
ルビーはundefステートメント
このステートメントは、メソッドの定義をキャンセルするために使用されます。 undefがメソッド本体内に表示することはできません。
undefと別名を使用することにより、クラスインターフェイスは、独立して、親クラスから変更されたが、独自の内部メソッドが呼び出したとき、それはプログラムを弱体化させる可能性があることに注意してくださいすることができます。
文法
undef 方法名
例
以下の例は、名前のバー法の定義をキャンセルされています。
undef bar