- Comprehensive Ruby Programming
- Jordan Hudgens
- 259字
- 2021-07-02 21:13:31
Proc code example
Let's begin by creating a simple proc:
full_name = Proc.new{ |first, last| first + " " + last}
Now, I can call this in two ways:
- The first is to use the bracket syntax followed by the arguments I want to pass to it:
p full_name["Jordan", "Hudgens"]
- I can also use the call method to run the proc and pass in the arguments inside of parentheses:
p full_name.call("Jordan", "Hudgens")

Let's go back and retrace the proc process. In this code, I'm creating a new instance of Proc and assigning it to a variable called full_name. Procs can take a code block as their parameter, so we are passing two different arguments to them, namely, first and last. Since they are arguments, they go inside pipes.
I can do anything I want inside this code block; in this case, I'm simply displaying the first and last name. I can also change it to do something like printing my first name five times. To do this, I have to modify the code like this:
full_name = Proc.new{ |first| first * 5}

We also have another way to create a proc:
full_name = Proc.new do |first|
first * 5
end
You may notice that I'm only passing in a single argument to the proc and there is no error. This is one of the key differences between using procs versus lambdas, and we'll also dedicate an entire section to the other ways in which they're different, later in this chapter.
The preceding code will result in the same output:

- Learning Scala Programming
- C及C++程序設(shè)計(第4版)
- JavaScript Unlocked
- Spring Boot+Spring Cloud+Vue+Element項目實戰(zhàn):手把手教你開發(fā)權(quán)限管理系統(tǒng)
- Python Deep Learning
- Clojure for Domain:specific Languages
- Cocos2d-x學(xué)習(xí)筆記:完全掌握Lua API與游戲項目開發(fā) (未來書庫)
- RabbitMQ Cookbook
- Android系統(tǒng)級深入開發(fā)
- NetBeans IDE 8 Cookbook
- OpenCV 3 Blueprints
- Java7程序設(shè)計入門經(jīng)典
- 創(chuàng)新工場講AI課:從知識到實踐
- Java基礎(chǔ)案例教程(第2版)
- 面向?qū)ο蟪绦蛟O(shè)計教程(C#版)