From: nobu.nokada@... Date: 2004-06-30T12:30:39+09:00 Subject: Re: [ANN] arrayfields-3.1.0 - the kirk haines release Hi, At Wed, 30 Jun 2004 10:42:54 +0900, Ara.T.Howard wrote in [ruby-talk:104887]: > as kirk haines right pointed out, i was not handling memory in the most > efficient manner in the 3.0.0 release. this release (3.1.0) should remedy > that with a single change to the interface. thanks kirk. $ ruby-1.8 -r arrayfields-3.0.0 -e 'a=[]' -e 'a.fields=[:a]' -e 'a[:x]=1' -e 'p a[:x]' 1 $ ruby-1.8 -r arrayfields-3.1.0 -e 'a=[]' -e 'a.fields=[:a]' -e 'a[:x]=1' -e 'p a[:x]' ./arrayfields-3.1.0.rb:73:in `[]=': undefined method `[]=' for nil:NilClass (NoMethodError) from -e:3 @fieldpos still remains outside FieldSet. --- arrayfields-3.1.0.rb 2004-06-30 09:35:55.000000000 +0900 +++ arrayfields.rb 2004-06-30 12:28:14.000000000 +0900 @@ -57,5 +57,5 @@ def [](idx, *args) #{{{ - if @fieldset and String === idx or Symbol === idx + if @fieldset and (String === idx or Symbol === idx) pos = @fieldset.pos idx return nil unless pos @@ -69,7 +69,7 @@ def []=(idx, *args) #{{{ - if @fieldset and String === idx or Symbol === idx + if @fieldset and (String === idx or Symbol === idx) pos = @fieldset.pos idx - @fieldpos[idx] = pos = size unless pos + @fieldset.fieldpos[idx] = pos = size unless pos super(pos, *args) else @@ -80,5 +80,5 @@ def at idx #{{{ - if @fieldset and String === idx or Symbol === idx + if @fieldset and (String === idx or Symbol === idx) pos = @fieldset.pos idx return nil unless pos @@ -91,5 +91,5 @@ def delete_at idx #{{{ - if @fieldset and String === idx or Symbol === idx + if @fieldset and (String === idx or Symbol === idx) pos = @fieldset.pos idx return nil unless pos @@ -103,5 +103,5 @@ #{{{ idx = args.first - if idx and @fieldset and String === idx or Symbol === idx + if idx and @fieldset and (String === idx or Symbol === idx) idx = args.shift pos = @fieldset.pos idx -- Nobu Nakada