原です。

In message "[ruby-list:18366] Re: Proc in a loop"
    on 99/11/04, Wakou Aoyama <wakou / fsinet.or.jp> writes:
|
|青山です。
|
|Proc オブジェクトとローカル変数の挙動に関しては他に例が上がっているの
|で、結果は同じで別タイプを
|
|$ ruby -e '
|a = proc{|n| proc{ if (0..10) === n then n else nil end } }
|p a[1].call
|p a[2].call
|p a[20].call
|'
|1
|2
|nil

はー、いつのまにか Proc#[] が出来ている!

Ruby 的には

  a = (0..10).collect{|nn| proc{ nn } }
  p a[1].call
  p a[2].call

ですかね。青山さんのは n が既出でもOKだけど、こっちは
だめですが。しかし Array オブジェクトでなくていいなら、

  a = Object.new
  def a.[](n)
    proc{ if (0..10) === n then n else nil end }
  end
  
  p a[1].call
  p a[2].call

もありかな。