2010年03月28日

ruby:ブロックも保存出来るよーな

このブログは証明できない。さん
■[Ruby]Rubyのblock、Proc、lambdaを理解する
http://d.hatena.ne.jp/shunsuk/20090101/1230816826

blockとProcの唯一の違いは、blockは保存できないということです。

トラックバック頂きました。なるほどー勉強になります。
んー。そうするとさらに疑問が出てきますね。Block が渡された関数内ではすでに Proc オブジェクト。ブロックはいつ Proc オブジェクトになるのかなぁ。ブロックを受け取る与え値に & が要るし、ary.each &a とすればOKとのことですし・・・。& かな。と、仕様書頼るかぁw(10/04/10)

とのことですが保存出来るんでは?
と、言いつつ ruby は rail をインストールしてちょこちょこっと弄っただけなので全然分かってない。つらつらマニュアル見るとプログラマの欲望を詰めに詰め込んだ言語ですねー。いや、すばらしいw 引き合いが少ないので使えないのが残念。

例えば、こんな事ではダメ???

def ref(&block)
block
end

a = ref {
  puts "ok!"
}

a.call # ok!
puts a.class # Proc class

ブロックを返せばどんなでもいいけども。a は ブロックへの参照だし、a のクラスを見ると Proc になってる。ブロックは単純に Proc クラスのインスタンスって考え方じゃダメなん?もちろん、使いまわし出来る。

def evl1(block)
  block.call
end

evl1 a # ok!

ただ、ary.each a なんて感じで使いたいけど・・・。このままだとエラーになる。
多分、なんとか出来るんだろーけど。知識も経験も圧倒的に不足してるw

posted by HiFa at 01:30 | 🌁 | Comment(2) | TrackBack(1) | へなちょこruby | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。