We'll explore Ruby's Array type and some of its methods. We'll also have a look at a few ways in which Ruby makes list processing (iterating through arrays) a bit more fun for the developer.
List processing is at the core of most web development tasks, so practicing it in Ruby (and later, comparing it to JavaScript), will illuminate the logical features of list processing tasks in addition to implementation specifics.
By the end of this, developers should be able to:
- Use Ruby array methods to iterate through arrays.
- Pass inline code as blocks to Array instance methods.
- Pass method names as symbols to Array instance methods.
- Fork and clone this repository.
- Make a new branch,
training
. - Install dependencies with
bundle install
.
Both JavaScript and Ruby have types that represent lists. In both languages,
these types are called "arrays". In Ruby, Array
is a class that holds methods
for arrays, and in JavaScript, Array.prototype
is an object that holds
methods for arrays.
Let's compare the list of methods for Array in each language. Here is some documentation for reference:
Let's explore Ruby's map
method.
# in irb or pry
fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
How can we use map to multiply each member of fibs
by two in Ruby?
# fibs.map { |fib| ... } for single-line, or
fibs.map do |fib|
# something here
end
Let's use reduce
to calculate the sum of elements in fibs
.
In JavaScript, we used a function to control the behavior of Array methods. In Ruby, we use a block (
{ |p| ... }
for one line blocks,do ... end
for multi-line blocks).
In Ruby, write
scripts, in lib/fibonacci.rb
.
- calculates the product of elements of
fibs
(excluding zero). - calculates the sum of the odd elements of
fibs
- calculates the product of the even elements of
fibs
(excluding zero).
Let's use the script bin/people_array.rb
to explore Array methods in Ruby.
The data in the objects we'll be processing comes from the comma separated
values (CSV) file data/people.csv
.
The Person objects we'll test against have properties/methods that align with
the headers in data/people.csv
plus the method age
.
Use the bin/people_array.rb
script to
- Count all the people who are older than you (or just pick an age).
- Count all the people who are younger than you (or just pick an age).
- Count all the people whose first name and last name start with the same letter.
- Calculate the average age of all the people.
The results of the Ruby Array methods -
, &
, |
, and flatten
aren't
easily reproducible in JavaScript.
We'll explore these methods using bin/sets_etc.rb
.
Remember our text analysis exercise from way-back?
Let's implement normalize_words
, unique_words
, word_count
, and
word_frequencies
in lib/string.rb
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact [email protected].