官术网_书友最值得收藏!

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:

主站蜘蛛池模板: 苏尼特左旗| 穆棱市| 深水埗区| 通州市| 邳州市| 宁南县| 玛纳斯县| 安庆市| 韶山市| 卢氏县| 桐庐县| 甘肃省| 安顺市| 通河县| 霍城县| 阜新| 新田县| 蕲春县| 沂南县| 长丰县| 铜陵市| 金乡县| 辽阳市| 南丰县| 平罗县| 海城市| 榆树市| 资中县| 阿图什市| 桐城市| 临泽县| 尤溪县| 神农架林区| 贺兰县| 关岭| 图木舒克市| 阜新市| 泽普县| 梁河县| 霍林郭勒市| 凉山|