Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Functional/OO Deck of Cards in Ruby - Start of a series of articles for rubylove.io
Rank = Struct.new(:rank, :value) do
def to_s; rank; end
end
Card = Struct.new(:rank, :suit) do
def to_s; "#{rank} of #{suit}"; end
end
class Deck
SUITS = %w(hearts clubs spades diamonds)
RANKS = %w(ace two three four five six seven
eight nine ten jack queen king)
attr_reader :cards
def initialize(shoe_size=1)
@cards = build_deck*shoe_size
end
private
def build_deck
all_ranks.flat_map {|rank| SUITS.flat_map {|suit| Card.new(rank,suit) } }
end
def all_ranks
RANKS.map.with_index {|rank, value| Rank.new(rank, value) }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.