April 25, 2015
Arrays are ordered collections of objects, be it strings, numbers, or arrays themselves! Hashes are collections, too, but they're unordered and utilize key-value pairs.
In Ruby, you can initialize arrays with the new method or implicitly, by populating them
ingredients = Array.new
ingredients = ["shrimp", "cumin", "chicken", "avocado", "cilantro"]
players = ["Joakim Noah", "Nate Robinson", "Tim Duncan", "Paul Pierce"]
Arrays are indexed by integers, starting at 0. If you wanted to access "Nate Robinson" from the players array, you would do it like so:
players[1]
Ruby has really convenient class methods for Arrays. You can access the first or last element of an array easily by calling (whatever's after the # symbol is just a comment in Ruby. I just want to show you what will be returned from the method):
ingredients.first #=> "shrimp"
ingredients.last #=> "cilantro"
You can even return the first n elements of an array:
ingredients.take(2) #=> ["shrimp", "cumin"]
Arrays can also be counted easily or checked for emptiness by:
ingredients.length #=> 5
ingredients.count #=> 5
ingredients.empty? #=> false
Let's move on to hashes for now. While arrays are awesome at keeping your elements organized, hashes are great for a different type of organization. Instead of using integers to access your values, you can use any object type to do so. For example, let's initialize a hash called population. We'll initialize it implicitly, without the "new" keyword.
population = {"Tiny Farm Town" => 1,000, "Suburban" => 20,000,
"Gentrified Brooklyn" => 1,000,000}
You can also use what are called symbols as the keys. Symbols are preceded with a colon. You still use "#=>" to point to your value, like so:
population = { :tiny_farm => 1,000}
Or you can do this and forget about the "=>":
population = { tiny_farm: 1000, suburban: 20,000, gentrified_brooklyn:
1,000,000}
You can populate a Hash differently, one by one, like this:
cities = {}
cities[:san_diego] = "college"
cities[:los_angeles] = "home"
You can use hashes as named parameters in a method. This might be beyond the scope of this beginner post, but I thought it was pretty cool:
Employee.create(name: "Blake Griffin", age: 25)
I think that's all I have for now. Til next time! Thanks for reading.