Associative Arrays in Ruby
For completeness, it's interesting to note that Ruby does provide Array#assoc
and Array#rassoc
methods that add "hash like lookup" for an array of arrays:
arr = [
['London', 'England'],
['Moscow', 'Russia'],
['Seattle', 'USA']
]
arr.assoc('Seattle') #=> '['Seattle', 'USA']
arr.rassoc('Russia') #=> ['Moscow', 'Russia']
Keep in mind that unlike a Ruby hash where lookup time is a constant O(1)
, both assoc
and rassoc
have a linear time O(n)
. You can see why this is by having a look at the Ruby source code on Github for each method.
So, although in theory you can use an array of arrays to be "hash like" in Ruby, it's likely you'll only ever want to use the assoc/rassoc
methods if you are given an array of arrays - maybe via some external API you have no control over - and otherwise in almost all other circumstances, using a Hash will be the better route.
Unlike PHP which conflates arrays and hashes, in Ruby (and practically every other language) they're a separate thing.
http://ruby-doc.org/core/classes/Hash.html
In your case it'd be:
a = {'Peter' => 32, 'Quagmire' => 'asdas'}
There are several freely available introductory books on ruby and online simulators etc.
http://www.ruby-doc.org/
Use hashes, here's some examples on how to get started (all of these do the same thing, just different syntax):
a = Hash.new
a["Peter"] = 32
a["Quagmire"] = 'asdas'
Or you could do:
a = {}
a["Peter"] = 32
a["Quagmire"] = 'asdas'
Or even a one liner:
a = {"Peter" => 32, "Quagmire" => 'gigity'}