RubyコードブロックBlocksの使い方の紹介

1768 ワード

Rubyのコードブロックは、Rubyの特色の一つです.通常do...end中間またはカッコ{}中間.コードブロックは、暗黙的または表示されるパラメータ伝達関数として使用することができ、場合によっては便利である.ここではRubyのコードブロックの4つの簡単な使い方について紹介します.
1.基本的な使い方
任意の関数は呼び出し時にコードブロックを暗黙変数として伝達することができ,メソッドの内部でyieldキーワードでコードブロックを実行する.くりを一つあげる
def hello 
  yield    #       
end
hello {puts 'Hello, jianshu.com'} #      hello      

実行結果は次のコードと等価です
def hello  #        
  puts 'Hello, jianshu.com'
end
hello

2.コードブロックが入力されたかどうかを確認する
メソッドでblock given?コードブロックが入力されたかどうかを判断します.
def hello
  unless block_given?
    puts 'We don\'t know what to say...' 
  else 
    yield 
  end
end
hello    #      
hello {puts 'Welcome to my blog.'}    #     

結果は
> We don't know what to say...
> Welcome to my blog

3.パラメータを含むコードブロックの呼び出し
def hello
  yield('Peach','jianshu.com')
end
hello {|name, address| puts name+', welcome to '+address}

実行結果は
> Peach, welcome to jianshu.com

4.コードブロックが明示的なパラメータとして入力される
以上の3つの例では,関数内部の呼び出しコードブロックはyieldを用い,表示せずにコードブロックを用いた.コードブロックは表示パラメータとして入力され、block variableとして関数で呼び出されます.
def hello(name,address,&block)  
  block.call name,address
  puts "Block has #{block.arity} parameters"
end
hello('Peach','Jianshu.com') {|name, address| puts name+', welcome to '+address}

実行結果は
> Peach, welcome to Jianshu.com
> Block has 2 parameters

上記のコードでは、パラメータを含むコードブロックを最後のパラメータとして関数に伝達するblockを用いる.コールはコードブロックを実行するarityは、コードブロックのパラメータ数を返します.
以上がRubyのコードブロックの簡単な入門です.ところで、ルビーは不思議な言葉ですね.
オリジナルは、転載しないでください.