Arrayオブジェクトにもの申す
irb(main):001:0> [1,2,3][3] => nil
何故、例外を起こさない!!*1
と、いうことで例外を起こすようにArray#[]を再定義してみる。
#!/usr/bin/ruby class Array def [](i) raise IndexError unless self.size>i.abs self.at(i) end end a=Array[1,2,3] puts a[0] # =>1 puts a[2] # =>3 puts a[3] # =>IndexError
まあ、Array#atを使った時点で負け犬か(涙
追記11/16 : http://d.hatena.ne.jp/n9d/20071116 へ書き直した
*1:ただ単に 上の記事のto_aが悔しかっただけともいう