Forum: Ruby strange arrayfields behaviour

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jean-Denis M. (Guest)
on 2009-02-06 16:42
(Received via mailing list)
Here is a counterintuitive behaviour of the arrayfields.rb module.

It's suppose to add light "indexing by keywords" capabilities to the
Array
class, without going all the way to hashes.

See http://rubyfurnace.com/docs/arrayfields-3.7.0/

However, after deleting items from an array, there is mismatch in the
fields.

Here is a small example:

>> require 'arrayfields'
=> true
>> ar = [1, 2, 3]
=> [1, 2, 3]
>> ar.fields = ["one", "two", "three"]
=> ["one", "two", "three"]
>> ar[1]
=> 2
>> ar["two"]
=> 2
>> ar
=> [1, 2, 3]
>> ar.delete_at("two")  # ****** delete ar["two"] ******
=> 2
>> ar["two"]            # ****** but there still is an ar["two"] ******
=> 3
>> ar
=> [1, 3]
>> ar["one"]
=> 1
>> ar["three"]
=> nil
>> ar.keys
=> ["one", "two", "three"]
>>

I don't believe this is a bug. But this bit me.
Lesson learned: arrayfields don't a Hash make.
This topic is locked and can not be replied to.