- yield, block_given?
- ブロック、クロージャ、スコープ
- スコープゲート、「スコープの門」 (スケープゴートと見間違えやすい) class, module, def
- 余談: Perl の my $var = 1 と Ruby の var = 1 は全然違う (理解できてなかった)
- スコープのフラット化
- Class.new, Module.new, define_method (うしろにブロック)
- instance_eval
> obj = Object.new
=> #<Object:0xb76e7320>
> obj.instance_eval{ p self }
#<Object:0xb76e7320>
=> nil
- instance_eval とフラットスコープ (コンテキスト探査機)
> class << obj
> attr_accessor :attr
> end
=> nil
> obj.instance_eval{ @attr = 100 }
=> 100
> obj.attr
=> 100
- クリーンルーム (これちょっと意義がわからない)
- 呼び出し可能オブジェクト - ブロック, Proc, lambda, proc
- &修飾子
- Proc と lambda の違い
- ブロックの中で return したときの振る舞い
- arity (項数) に対する厳格さ
- メソッド - 呼び出し可能オブジェクトとして
- Object#method, Method#call, Method#unbound, Method#bind, Method#to_proc
- まとめ: 呼び出し可能オブジェクトとは
- DSL (ドメイン特化言語)