Rubyの本読書会 第五回 レポート
参加してきました。あt(ry
- 3月17日追記
なんとか時間を調整して参加。
来月からはいよいよ参加がきびしくなるかな。
今回はなんとゲストとして後藤裕蔵さんも参加。
#Rubyは、Railsから本腰をいれて勉強し始めたけど、実はたのしいRubyの初版は持ってたり。
第6章 「さらにメソッドについて」から。
ページ数にしてたったの6ページだったので早くおわるんじゃないかと
思ってましたが、なんだかんだいっているいとたっぷり2時間近くかかってしまいました。
詳細はそのうちログにあがるの期待するとして(id:Hexaさん記録係乙でした)、
ブロックと、Procオブジェクトと、lambdaについてなんとなくわかったような。
Procオブジェクトには2種類あって、
- raw proc
- 最後の引数に&が付いたメソッドにブロックを渡す。
- ブロック付きで、Proc.newを呼び出す。
- lambda
- ブロック付きで、Kernel.lambdaを呼び出す。
- ブロック付きで、Kernel.procを呼び出す(非推奨)。
機能の違いは、
- raw proc
def call_rowproc rowproc = Proc.new do puts "call row proc" return 0 end rowproc.call puts "end call_rowproc" end call_rowproc
実行結果
call row proc => 0
- lambda
def call_lambda l = lambda do puts "call lambda" return 0 end l.call puts "end call_lamda" end call_lambda
実行結果
call lambda
end call_lamda
=> nill
row procだとreturnを処理すると呼び出しもとのメソッドごと終了する。
lambdaは独立したメソッド本体のように振舞うので
returnを実行しても呼び出し元のメソッドの処理に戻るだけ。
処理の流れにかかわる仕様には要注意(by ようさん)
ちなみに脚注にでていた、Conrad Schneikerってだれ?ってのが
気になったので調べたら、まつもとさんの日記がひっかかりました。
終了後のだらだらはパンやおにぎりをほおばりつつ歓談(買出し部隊のみなさん乙です)。
ささださんid:moroさん、ありがとうございました。
参加されたみなさんお疲れ様でした。