diff options
| -rw-r--r-- | ruby.html.markdown | 24 | 
1 files changed, 18 insertions, 6 deletions
| diff --git a/ruby.html.markdown b/ruby.html.markdown index 861a94ad..52321ff6 100644 --- a/ruby.html.markdown +++ b/ruby.html.markdown @@ -5,6 +5,7 @@ contributors:    - ["David Underwood", "http://theflyingdeveloper.com"]    - ["Joel Walden", "http://joelwalden.net"]    - ["Luke Holder", "http://twitter.com/lukeholder"] +  - ["Tristan Hume", "http://thume.ca/"]  ---  ```ruby @@ -158,11 +159,6 @@ hash['number'] #=> 5  # Asking a hash for a key that doesn't exist returns nil:  hash['nothing here'] #=> nil -# Iterate over hashes with the #each method: -hash.each do |k, v| -  puts "#{k} is #{v}" -end -  # Since Ruby 1.9, there's a special syntax when using symbols as keys:  new_hash = { defcon: 3, action: true} @@ -193,7 +189,12 @@ end  # HOWEVER  # No-one uses for loops -# Use `each` instead, like this: +# Under the hood for loops use the each method which takes a "block". +# A block is a bunch of code that you can pass to a method like each. +# It is analogous to lambdas, anonymous functions or closures in other programming languages. + +# The each method runs the block multiple times passing a counter. +# You can iterate over a range like this:  (1..5).each do |counter|    puts "iteration #{counter}" @@ -204,6 +205,17 @@ end  #=> iteration 4  #=> iteration 5 +# You can also surround blocks in curly brackets: +(1..5).each {|counter| puts "iteration #{counter}"} + +# You can also iterate over the contents of data structures using each. +array.each do |element| +  puts "#{element} is part of the array" +end +hash.each do |key, value| +  puts "#{key} is #{value}" +end +  counter = 1  while counter <= 5 do    puts "iteration #{counter}" | 
