Ruby Procs Are Amazing!
I just got through the Codeacademy Procs section and got so excited I tweeted about them and emailed my girlfriend explaining what Procs are and why they’re so cool…bad I know. Luckily she works in finance and is a total excel geek so she can empathize and won’t think I’m a complete weirdo.
Since I already tweeted and sent an email about Procs I figured I’d post about them to round things out.
Why Procs are Cool
Procs allow you to save a block of code, something like { |x| x *3 }
which is saying take whatever I give you (x) and multiply it by 3. What you can then do with this is pass it to methods.
So for example, I have an array of people’s heights, like so:
1
|
|
And I want to get all the heights that are above 4 feet tall because that’s how tall you have to be to ride the ride…le duh.
I could write some long method called rubyover_4_feet
where I pass it the array and then it returns the heights that are above 4 feet tall. But that would require 9 lines of code…maybe less but that’s how many lines it took me.
1 2 3 4 5 6 7 8 9 |
|
Instead I can call the method .select
on the array and pass it a Proc that tells it to only select heights that are taller than 4 feet.
Below is a proc that checks for being over 4 feet tall. Then I just pass that proc to the .select
method telling it to only “select” heights over 4 feet.
1 2 3 |
|
So what took me 9 lines of code I did in 1, since passing the Proc to select is the same as calling the over_4_feet method.