2006-03-26から1日間の記事一覧

メソッド[]

当然ながら、(i, x)としてメソッドを定義すると、a[123,456,789]などは書けなくなります。 class Rubyco def [](i, x) puts "i=#{i}, x=#{x}" end def []=(i, v) puts "i=#{i}, v=#{v}" end end a = Rubyco.new a[123] = 456 #=> i=123, v=456 a[123,456] #=…

局所変数の作り方

代入されると局所変数ができるのだとしたら、その場所の環境を使って代入文をevalすれば局所変数を別の箇所で作ることができるのではないかのテストです。 make_localvarで局所変数を作ろうと思ったのですが、以下の通り、結果は失敗でした。ri variableでさ…

Marshalでdeep copy

Object#dupはshallow copyですけれど、Marshal.dumpとMarshal.loadでdeep copyになります。 a = ["A", ["B", "C"]] # dup - shallow copy b = a.dup p a == b #=> true p a.object_id == b.object_id #=> false p a[0].object_id == b[0].object_id #=> true…