プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Ruby1.9、「ブロック付きメソッド」を理解する(4) ブロック有無の判定方法
Ruby1.9、「ブロック付きメソッド」を理解する(3) ブロックの実行方法」の続きです。
今回のお題は「ブロック有無の判定方法」(--)b

ブロックさんは呼び出し元でくっつけてくれるわけです。
つまり呼ばれる方はブロックがくっついてるかは分からない。
これはひじょーに不安です。

と言う訳でその不安の解消方法がこちらφ(--)

  class HogeClass
      #yieldで実行
      def hogeMethod1(arg1)
          
if defined? yield
              yield(arg1)
          else
              puts "yieldないよ"
          end
      end
  
      #ブロック引数で実行
      def hogeMethod2(arg1, &block)
          
if block
              block.call(arg1)
          else
              puts "blockないよ"
          end
      end
  
      #クロージャで実行(1)
      def hogeMethod3(arg1)
          
if defined? yield
              a = Proc.new
              a.call(arg1)
          else
              puts "Proc.newできないよ"
          end
      end
  
      #クロージャで実行(2)
      def hogeMethod4(arg1)
          
if defined? yield
              b = proc
              b.call(arg1)
          else
              puts "procできないよ"
          end
      end
  end
  
  aaa = HogeClass.new
  
  aaa.hogeMethod1(1){|x| puts x}
  aaa.hogeMethod1(2)
  aaa.hogeMethod2(3){|x| puts x}
  aaa.hogeMethod2(4)
  aaa.hogeMethod3(5){|x| puts x}
  aaa.hogeMethod3(6)
  aaa.hogeMethod4(7){|x| puts x}
  aaa.hogeMethod4(8)


実行結果はこちらφ(--)

  1
  yieldないよ
  3
  blockないよ
  5
  Proc.newできないよ
  7
  procできないよ


ブロック引数のときはそのままif文に突っ込んで
それ以外は「defined? yield」で判定すればOK\(--)/

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

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

  関連記事