# Arrayfields-3.6.0

**URL:** <https://www.ruby-forum.com/t/arrayfields-3-6-0/66212>\
**Category:** Ruby\
**Created:** [August 24, 2006, 12:18am UTC](https://www.ruby-forum.com/t/arrayfields-3-6-0/66212 "2006-08-24T00:18:44Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 24, 2006, 12:18am UTC](https://www.ruby-forum.com/t/arrayfields-3-6-0/66212/1 "2006-08-24T00:18:44Z")

</div>

URLS:

- [http://raa.ruby-lang.org/project/arrayfields/](http://raa.ruby-lang.org/project/arrayfields/)
- [http://www.codeforpeople.com/lib/ruby/arrayfields/](http://www.codeforpeople.com/lib/ruby/arrayfields/)
- [http://rubyforge.org/projects/arrayfields/](http://rubyforge.org/projects/arrayfields/)

SYNOPSIS:

allow keyword access to arrays:

```
 require 'arrayfields'

 fields = 'name', 'age'
 row = ['bob', 30]

 row.fields = fields

 row['name'] #=> 'bob'
 row.indices 'name', 'age' #=> ['bob', 30]

```

assigning to un-named fields appends:

```
 stack = []
 stack.fields = %w(zero one)
 stack['zero'] = 'zero'
 stack['one'] = 'one'
 stack #=> ['zero', 'one']

```

useful for database work:

```
 relation = pgconn.query sql
 relation.size #=> 65536

 # yikes! do we really want to re-construct a hash for for each 

```

tuple when  
# we already have Arrays?

```
 fields = %w(ssn name position)
 table.each{|tuple| tuple.fields = fields}

 tuples[34578]['ssn'] #=> 574865032

```

LIST OF OVERRIDDEN METHODS:

- Array#[]
- Array#[]=
- Array#at
- Array#delete\_at
- Array#fill
- Array#values\_at
- Array#indices
- Array#indexes
- Array#slice
- Array#slice!

LIST OF NEW Array METHODS:

- Array#fields=
- Array#each\_with\_field

DOCS/USAGE/SAMPLE:

- lib/arrayfields.rb
- test/arrayfields.rb

AUTHOR:

removed\_email\_address@domain.invalid

HISTORY:

3.6.0:  
- made string/symbol keys interchangeable

```
     list = [0, 1, 2]

     list.fields = %w( a b c )

     p list['a'] #=> 0
     p list[:a] #=> 0

```

3.5.0:  
- added more hash-like methods  
- update  
- replace  
- invert

3.4.0:  
- added FieldedArray[] ctor  
- added methods to make Arrays with fields set behave more closely  
to Hashes  
- each\_pair  
- each\_key  
- each\_value  
- fetch  
- has\_key?  
- member?  
- key?  
- has\_value?  
- value?  
- keys?  
- store  
- values

3.3.0:  
- added gemspec file - thnx Assaph M.  
- added FieldedArray proxy class which minimizes modifications to  
class  
Array and allow ArrayFields to work (potientially) other  
arraylike object.  
thnks Sean O’Dell  
- added ArrayFields#to\_hash method - this seems like an obvious one  
to add!  
- remedied bug where using append feature of assigning with unknow  
field  
appedended but did not append to acutal fields  
- added samples  
- created rubyforge accnt @  
[http://rubyforge.org/projects/arrayfields/](http://rubyforge.org/projects/arrayfields/)

3.2.0:  
- precedence fix in many methods - thnx. nobu  
- test for #slice! were not being run - corrected  
- added test for appeding via “a[‘new\_field’] = 42”

3.1.0:  
- added FieldSet class to reduce ram - thnx. Kirk H. for  
profiliing  
memory and prompting this change

```
 - interface changed every so slightly so

     a.fields = 'a', 'b', 'c'

   is not allowed. use

     a.fields = %w(a b c)

   or

     a.fields = ['a', 'b', 'c']

```

3.0.0:  
- added unit tests

-a
