Ruby Enumerable and Comparable
Prerequisites
Objectives
By the end of this talk, developers should be able to:
- Add Comparable operators to a class.
- Add Enumerable methods to a class.
Preparation
- Fork and clone this repository. FAQ
- Create a new branch,
training
, for your work. - Checkout to the
training
branch. - Install dependencies with
bundle install
.
Introduction
We'll explore an important Ruby mechanism for adding behavior to a class: mixins.
The Comparable Module
Lab - comparing cards
How do you compare cards?
In your squads create an algorithm to determine which of two cards, if either, is "greater" than the other.
Demo
The Comparable module provide
common operators to a class that implements the <=>
(spaceship) operator.
Let's look at lib/card.rb
.
Adding the spaceship operator to Card
.
Lab - A list as a deck of cards
Let's simulate Enumerable methods using a deck of cards. In your squad, one of you will act as the method and another as the block. The third squad member will record the result.
Cards in Ruby
Let's explore the start of writing a card game in Ruby using lib/card.rb
and
lib/deck.rb
.
The Enumerable Module
We'll build our own list
using Ruby's Enumerable module.
Code along - Stepped Range
We'll build a new range class that increments by a provided value.
The key to creating an Enumerable
class is a correct implementation of the
each
method.
Tasks
Developers should run these often!
bin/rake nag
(orbundle exec rake nag
): runs code quality analysis tools on your code and complains.bin/rake test
(orbundle exec rake test
): runs automated tests.
Additional Resources
License
- 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 legal@ga.co.