Ruby 块
あなたは Ruby でメソッドを定義する方法と呼び出す方法をすでに知っています。同様に、Ruby にはブロックの概念があります。
- ブロックは大量のコードで構成されます。
- ブロックには名前を付ける必要があります。
- ブロック内のコードは常に中括弧 {} で囲まれます。
- ブロックは常に同じ名前を持つ関数から呼び出されます。つまり、ブロック名がtestの場合、関数を使用する必要がありますtestこのブロックを呼び出すには
- 使用できるのはyieldステートメントでブロックを呼び出します。
構文
ここでは、シンプルなyieldステートメントを使用してブロックを呼び出す方法を学びます。また、パラメータ付きのyieldステートメントを使用してブロックを呼び出す方法も学びます。例では、これら2種類のyieldステートメント。
yieldステートメント
yield ステートメントの例を見てみましょう:
例
試してみる »
上記の例の実行結果は次のとおりです:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
パラメータを渡す yield ステートメントも使用できます。次に例を示します:
例
試してみる »
上記の例の実行結果は次のとおりです:
你在块 5 内 在 test 方法内 你在块 100 内
ここでは、yieldステートメントの後にはパラメータが続きます。複数のパラメータを渡すこともできます。ブロック内では、2本の縦線の間に変数を置いてパラメータを受け取ることができます。したがって、上記のコードでは、yield 5 ステートメントは test ブロックに値 5 をパラメータとして渡します。
次に、以下のステートメントを見てください:
ここでは、値 5 が変数 i に受け取られます。次に、以下の puts ステートメントを見てください:
この puts ステートメントの出力は次のとおりです:
複数のパラメータを渡したい場合は、yieldステートメントは次のようになります:
この場合、ブロックは次のようになります:
パラメータはカンマで区切られます。
ブロックとメソッド
ブロックとメソッドがどのように関連しているかを確認しました。通常、yield ステートメントを使用して、同じ名前のメソッドからブロックを呼び出します。したがって、コードは次のようになります:
例
この例は、ブロックを実装する最も簡単な方法です。あなたはyieldステートメントを使用して test ブロックを呼び出します。
ただし、メソッドの最後のパラメータの前に & が付いている場合は、そのメソッドにブロックを渡すことができ、そのブロックは最後のパラメータに代入できます。* と & がパラメータリストに同時に出現する場合は、& を後ろに置く必要があります。
上記の例の実行結果は次のとおりです:
Hello World!
BEGIN ブロックと END ブロック
各 Ruby ソースファイルは、ファイルがロードされるときに実行されるコードブロック(BEGIN ブロック)と、プログラムの実行完了後に実行されるコードブロック(END ブロック)を宣言できます。
例
1つのプログラムには複数の BEGIN ブロックと END ブロックを含めることができます。BEGIN ブロックは出現した順に実行されます。END ブロックは出現した逆順に実行されます。実行すると、上記のプログラムは次の結果を出力します:
BEGIN 代码块 MAIN 代码块 END 代码块その他の拡張