プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Ruby1.9、「ブロック付きメソッド」を理解する(1) 基本
Rubyの奴、やるなっ!Σ(´・д・`)と初めて思ったかもです。

Rubyさんでは変数やオブジェクトだけではなく
コード(手続き)までパラメータとして渡せるそうです。

書き方は例えばこんなんφ(--)

  class HogeClass
      def hogeMethod1
          
yield
      end
  end
  
  aaa = HogeClass.new
  aaa.hogeMethod1()
{puts "hoge"}

実行するとこんなん出ちゃいますφ(--)

  hoge

ちなみに「{puts "hoge"}」の部分をブロックと呼びます。
メソッドにパラメータで渡すコードの部分ね
パラメータで渡すコードは「{}(中かっこ)」の中に書きます。

「yield」がブロックのコードを実行してるところです。
「yield」って書くとその部分がブロックに置き換わるイメージ。
上記のサンプルコードは言ってしまえば

  class HogeClass
      def hogeMethod1
          
puts "hoge"
      end
  end
  
  aaa = HogeClass.new
  aaa.hogeMethod1


と同じです。

うじゃあ、なんでわざわざ面倒臭い書き方するのか?
それはブロック部分を呼出元で定義できるから(--)b

例えばこんなことができますφ(--)

  class HogeClass
      def hogeMethod1
          yield
      end
  end
  
  aaa = HogeClass.new
  aaa.hogeMethod1()
{puts "hoge"}
  aaa.hogeMethod1(){puts "hogehoge"}

実行結果はこんなんなりますφ(--)

  hoge
  hogehoge


ふ~ん(--)
なるほどね!

Ruby1.9、「ブロック付きメソッド」を理解する(1) 基本
Ruby1.9、「ブロック付きメソッド」を理解する(2) ブロック変数
Ruby1.9、「ブロック付きメソッド」を理解する(3) ブロックの実行方法
Ruby1.9、「ブロック付きメソッド」を理解する(4) ブロック有無の判定方法
Ruby1.9、「ブロック付きメソッド」を理解する(5) イテレータ
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Ruby  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事