Ruby-methods
Ruby-メソッド
Rubyのメソッドは、他のプログラミング言語の関数と非常によく似ています。 Rubyメソッドは、1つ以上の繰り返し可能なステートメントを単一のユニットにバンドルするために使用されます。
メソッド名は小文字で始める必要があります。 メソッド名を大文字で始めると、Rubyはそれが定数であると見なし、呼び出しを誤って解析する可能性があります。
メソッドは呼び出す前に定義する必要があります。そうしないと、Rubyは未定義のメソッド呼び出しに対して例外を発生させます。
構文
したがって、次のように簡単なメソッドを定義できます-
あなたはこのようなパラメータを受け入れるメソッドを表すことができます-
あなたは、必要なパラメータを渡さずにメソッドが呼び出された場合に使用されるパラメータのデフォルト値を設定することができます-
あなたは単純なメソッドを呼び出すたびに、次のようにメソッド名のみを書きます-
ただし、パラメータを使用してメソッドを呼び出す場合、次のようなパラメータとともにメソッド名を記述します-
パラメーター付きのメソッドを使用する場合の最も重要な欠点は、そのようなメソッドを呼び出すときは常にパラメーターの数を覚えておく必要があることです。 たとえば、メソッドが3つのパラメーターを受け入れ、2つだけを渡すと、Rubyはエラーを表示します。
例
これは、次の結果を生成します-
メソッドからの戻り値
Rubyのすべてのメソッドはデフォルトで値を返します。 この戻り値は、最後のステートメントの値になります。 たとえば-
このメソッドを呼び出すと、最後に宣言された変数_k_が返されます。
Rubyのreturnステートメント
rubyの_return_ステートメントは、Rubyメソッドから1つ以上の値を返すために使用されます。
構文
3つ以上の式が指定されている場合、これらの値を含む配列が戻り値になります。 式が指定されていない場合、nilが戻り値になります。
例
この例を見てください-
これは、次の結果を生成します-
可変数のパラメーター
2つのパラメーターをとるメソッドを宣言するとします。このメソッドを呼び出すときは常に、2つのパラメーターを渡す必要があります。
ただし、Rubyでは、可変数のパラメーターで機能するメソッドを宣言できます。 このサンプルを調べてみましょう-
このコードでは、1つのパラメーターテストを受け入れるメソッドサンプルを宣言しています。 ただし、このパラメーターは可変パラメーターです。 これは、このパラメーターが任意の数の変数を受け取ることができることを意味します。 したがって、上記のコードは次の結果を生成します-
クラスメソッド
メソッドがクラス定義の外部で定義されている場合、そのメソッドはデフォルトで_private_としてマークされます。 一方、クラス定義で定義されたメソッドは、デフォルトでパブリックとしてマークされます。 メソッドのデフォルトの可視性と_private_マークは、モジュールの_public_または_private_によって変更できます。
クラスのメソッドにアクセスするたびに、最初にクラスをインスタンス化する必要があります。 次に、オブジェクトを使用して、クラスの任意のメンバーにアクセスできます。
Rubyを使用すると、クラスをインスタンス化せずにメソッドにアクセスできます。 クラスメソッドがどのように宣言されアクセスされるかを見てみましょう-
メソッドreturn_dateの宣言方法を参照してください。 クラス名の後にピリオドが続き、その後にメソッドの名前が続いて宣言されます。 次のように、このクラスメソッドに直接アクセスできます-
このメソッドにアクセスするには、Accountsクラスのオブジェクトを作成する必要はありません。
Rubyエイリアスステートメント
これにより、メソッドまたはグローバル変数にエイリアスが与えられます。 エイリアスはメソッド本体内で定義できません。 メソッドのエイリアスは、メソッドがオーバーライドされた場合でも、メソッドの現在の定義を保持します。
番号付きグローバル変数($ 1、$ 2、…)のエイリアスを作成することは禁止されています。 組み込みのグローバル変数をオーバーライドすると、深刻な問題が発生する可能性があります。
構文
例
ここで、barのfooエイリアスを定義しました。$ MATCHは$&のエイリアスです。
Ruby undefステートメント
これにより、メソッド定義がキャンセルされます。 _undef_はメソッド本体に表示できません。
_undef_および_alias_を使用することにより、クラスのインターフェイスをスーパークラスとは独立して変更できますが、selfの内部メソッド呼び出しによってプログラムが破損する可能性があることに注意してください。
構文
例
_bar_と呼ばれるメソッドの定義を解除するには、次のようにします-