The road to Ruby mastery is paved with blocks, procs, and lambdas. To be a truly effective Ruby programmer, it's not enough just to understand these features - you need to know how to use them in practice. Discover how to write code that is elegant, expressive, and a joy to use, and gain a deep understanding of these concepts so you can work with third-party gems and libraries more easily. Whether you are completely new to Ruby or a seasoned Rubyist, you'll find good use for these concepts in your code.
Ruby developers use the Ruby language as the yardstick for expressivity, flexibility, and elegance - and a large part of this is due to blocks, lambdas, and procs. These language features make Ruby one of the most beautiful and pleasant languages to work with. Learn how to understand and craft code that will take you closer to Ruby mastery.
Start with the basics of closures and then dive into blocks, as you learn about the patterns that involve blocks, and how they are used in real-world code. Then create and use procs and lambdas. Finally, build your own lazy enumerables with advanced Ruby features such as fibers and generators. Along the way, work with computer science concepts such as closures, free variables and first-class functions. Spot a closure easily. Identify the patterns where you can effectively use blocks and re-implement common standard library methods using them. Trace through how Symbol#to_proc works and find out the different ways of calling procs. This succinct guide takes you through the different kinds of Ruby closures with engaging examples, and each chapter comes with exercises that test and challenge your understanding.
When you finish this book, blocks, procs, and lambdas will have become an integral part of your Ruby toolbox.
What You Need: Ruby 2.x and a basic familiarity with Ruby.
Author(s): Benjamin Tan Wei Hao
Edition: 1
Publisher: Pragmatic Bookshelf
Year: 2017
Language: English
Commentary: True PDF
Pages: 96
City: Raleigh, NC
Tags: Ruby; Functional Programming; Lambda Functions; Laziness; Closures; Currying
Cover
Table of Contents
Acknowledgements
Welcome!
Why This Book?
Who Is This Book For?
How to Use This Book
What's in This Book
About Ruby Versions
Where to Go for Help
1. Closing in on Closures
The Foundations of a Closure
Simulating Classes with Closures
Implementing Callbacks in Ruby with Lambdas
Implementing Enumerable#reduce (or Fold Left)
Test Your Understanding!
Wrapping Up
2. Beautiful Blocks
Separating the General from the Specific
Executing Blocks with the yield Keyword
Blocks as Closures and Block Local Variables
Block Pattern #1: Enumeration
Block Pattern #2: Managing Resources
Block Pattern #3: Beautiful Object Initialization
Test Your Understanding!
Wrapping Up
3. The Power of Procs and Lambdas
Procs and the Four Ways of Calling Them
Lambdas—Same, But Different
How Symbol#to_proc Works
Currying with Procs
Test Your Understanding!
Wrapping Up
4. Building Your Own Lazy Enumerables
Understanding Lazy Enumerables
Building Our Skeleton
Implementing Lax
Implementing Lazy map
Implementing Lazy take
Test Your Understanding!
Wrapping Up
A1. Solutions
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Bibliography