Latest web development tutorials

Rubyのブロック

あなたは既にRubyのメソッドを定義する方法を知っているとどのようにメソッドを呼び出します。 同様に、Rubyはブロックの概念があります。

  • ブロックは、多くのコードで構成されています。
  • あなたはブロック名を取る必要があります。
  • ブロック符号は、常に内部の中括弧{}で囲まれています。
  • そこからは、常に同じ名前の関数呼び出しをブロックしました。 これはテストのためのあなたのブロック名ならばあなたは、この関数のテストブロックを呼び出すために使用することを意味します。
  • あなたはブロックを呼び出すためにyield文を使用することができます。

文法

block_name{
   statement1
   statement2
   ..........
}

ここでは、ブロックを呼び出すために、単純なyield文を使用する方法を学習します。 また、呼び出されたブロックへのパラメータでyield文を使用する方法を学習します。 例では、yield文の2つのタイプが表示されます。

yield

のは、例えば、yield文を見てみましょう:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   puts "在 test 方法内"
   yield
   puts "你又回到了 test 方法内"
   yield
end
test {puts "你在块内"}

上記の業績の例として次のように:

在 test 方法内
你在块内
你又回到了 test 方法内
你在块内

また、パラメータでyield文を渡すことができます。 次に例を示します。

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   yield 5
   puts "在 test 方法内"
   yield 100
end
test {|i| puts "你在块 #{i} 内"}

上記の業績の例として次のように:

你在块 5 内
在 test 方法内
你在块 100 内

ここでは、yield文の後にパラメータを追いました。 あなたも、複数のパラメータを渡すことができます。 ブロックでは、パラメータを受け入れるために、2つの垂直バーの間で変数を配置することができます。 したがって、上記のコードでは、収量5文は、5試験片の値にパラメータとして渡されます。

さて、次の文を見て:

test {|i| puts "你在块 #{i} 内"}

ここでは、5の値は、変数iを受け取ることになります。 今、私たちは、次のステートメントを守っ置きます:

puts "你在块 #{i} 内"

これは、出力文があります:

你在块 5 内

あなたが複数のパラメータを渡したい場合は、次のようにyield文は次のとおりです。

yield a, b

この時、ブロックに示されるように。

test {|a, b| statement}

パラメータは、カンマで区切られました。

ブロックと方法

あなたはブロックとどのように相互に関連する方法との間で見てきました。 通常は、yield文が同じ名前を持つメソッドからブロックを呼び出して使用します。 次のようにしたがって、コードは次のようになります。

#!/usr/bin/ruby

def test
  yield
end
test{ puts "Hello world"}

この例では、ブロックを達成するための最も簡単な方法です。 あなたはyield文は、テストブロックを呼び出して使用します。

しかし、その後でメソッドの前に最後のパラメータ場合&あなたは方法はブロックを渡されることができ、このブロックは、最後のパラメータに割り当てることができます。 もし*と&パラメータ・リストに表示され、&背面に配置する必要があります。

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}

上記の業績の例として次のように:

Hello World!

BEGINとENDブロック

すべてのRubyのソースファイルが宣言することができたときに、コード・ブロック(BEGINブロック)ファイルを実行するためにロードされ、プログラムの後(ENDブロック)を実行するコードブロックの実行を終了したとき。

#!/usr/bin/ruby

BEGIN { 
  # BEGIN 代码块
  puts "BEGIN 代码块"
} 

END { 
  # END 代码块
  puts "END 代码块"
}
  # MAIN 代码块
puts "MAIN 代码块"

プログラムは、複数のBEGINとENDブロックを含めることができます。 BEGINブロックは、それらが表示される順序で実行されます。 ENDブロック彼らは逆の順序で表示されます。 実行すると、上記のプログラムは、以下の結果が得られます。

BEGIN 代码块
MAIN 代码块
END 代码块