Array of Pairs data structure?

G

Greg Willits

In a language called Lasso I am used to a data structure of an array of
pairs:

$simpleArray = array( 'color', 'shape', 'size')

$arrayofPairs = array( 'color' = 'red', 'shape' = 'trapezoid', 'size' =
'small')

$simpleMap = map( 'color' = 'red', 'shape' = 'trapezoid', 'size' =
'small')

The difference between arrayofPairs and simpleMap is that the map (hash)
cannot gaurantee a specific order whereas the arrayofPairs does. It's an
array, so order is preserved. It also has what effectively works just
like hash keys. I can find, retrieve, and even sort based on the first
element of the pair. Lasso has a primitive data type of a Pair.

Does Ruby have a way to create this arrayofPairs? I don't see a data
type like a "pair" in Ruby, so not sure what to insert into each array
element to net this same data structure except I guess maybe an array of
single key hashes?

ideas? Thanks.

-- gw
 
G

Greg Willits

OK, nevermind, I think I found enough functionality to get me by.

An array of arrays is sortable (an array of hashes is not).

And, array.assoc provides a lookup of a specific "pair"

y = [['bbb','beta'], ['ggg','gamma'], ['aaa','alpha']]

puts y.assoc('ggg') # will return ['ggg', 'gamma]

puts y.sort # actually works. Weeee.


-- gw
 
A

ara.t.howard

In a language called Lasso I am used to a data structure of an
array of
pairs:

$simpleArray = array( 'color', 'shape', 'size')

$arrayofPairs = array( 'color' = 'red', 'shape' = 'trapezoid',
'size' =
'small')

$simpleMap = map( 'color' = 'red', 'shape' = 'trapezoid', 'size' =
'small')

The difference between arrayofPairs and simpleMap is that the map
(hash)
cannot gaurantee a specific order whereas the arrayofPairs does.
It's an
array, so order is preserved. It also has what effectively works just
like hash keys. I can find, retrieve, and even sort based on the first
element of the pair. Lasso has a primitive data type of a Pair.

Does Ruby have a way to create this arrayofPairs? I don't see a data
type like a "pair" in Ruby, so not sure what to insert into each array
element to net this same data structure except I guess maybe an
array of
single key hashes?

ideas? Thanks.

use arrayfields.


cfp:~ > cat a.rb
require 'rubygems'
require 'arrayfields' ### gem install arrayfields

a = Arrayfields.new 'k', 'v', 'K', 'V'
p a['k']
p a['K']
p a

__END__

docs @ http://codeforpeople.com/lib/ruby/arrayfields/
arrayfields-4.5.0/README



cfp:~ > ruby a.rb
"v"
"V"
["v", "V"]



kind regards.

a @ http://codeforpeople.com/
 
R

Rick DeNatale

OK, nevermind, I think I found enough functionality to get me by.

An array of arrays is sortable (an array of hashes is not).

And, array.assoc provides a lookup of a specific "pair"

y = [['bbb','beta'], ['ggg','gamma'], ['aaa','alpha']]

puts y.assoc('ggg') # will return ['ggg', 'gamma]

puts y.sort # actually works. Weeee.

You might also consider using a hash, for access and produce the array
when needed to sort. Consider:

h = {"color" => "red", "shape" => "trapezoid", "size" => "small" }

h.to_a # => [["size", "small"], ["shape", "trapezoid"], ["color", "red"]]

h.to_a.sort # => [["color", "red"], ["shape", "trapezoid"], ["size", "small"]]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top