Ruby中的Procs

Ruby Procs

我们在Ruby中经历了许多传统的事情,但是procs是您会遇到的新事物。我们已经看到了如何在Ruby方法中返回值,但也可以在Procs的帮助下将方法存储在变量中。这使我们的代码更具灵活性和可读性。您可以将整个指令或规则集存储在一个变量中,并可以根据需要在任何地方调用它们。

Procs的语法:

    variable_name = Proc.new{|argument1,argument2|argument1+argument2}

我认为语法使您对Procs非常清楚。可以使用“ .new”方法简单地定义过程。它需要一个块,在块中将定义整个过程集。您可以在“ ||”中指定参数列表 。现在,借助下面给出的示例,您将更加清楚地了解它,

var = Proc.new{|num1,num2,num3| num1+num2+num3}

p "The sum is #{var[1,3,4]}"

输出结果

"The sum is 8"

您可以在上面的代码中观察到我们在var变量内创建了一个procproc的目的是计算用户输入的元素总数。这些元素在||中指定 并且所有处理都在{}块内完成。我们只是在方括号的帮助下调用proc,而方括号具有实际参数。

总是在块的帮助下创建过程。块始终可以帮助我们绑定语句的行为。下面介绍了两种创建proc的方法:

1)在花括号的帮助下

在上面的示例中,我们已经在花括号的帮助下创建了proc。为了方便您参考,以下提供了一个摘要,

var = Proc.new{
	|num|
	i = 1 

	while(i<=10)
		p num * i
		i = i + 1
	end
}
var[12]

输出结果

12
24
36
48
60
72
84
96
108
120

2)在 do end block 的帮助下

proc也可以在do .. end block的帮助下创建。这种方式使代码更易于理解。让我们借助示例了解这一点。让我们以以下方式修改上面的示例,

var = Proc.new do |num|
	i = 1 
	while(i<=10)
		p num * i
		i = i + 1
	end
end
var[17]

输出结果

17
34
51
68
85
102
119
136
153
170

您可以通过两种方式调用proc:一种是仅编写变量名称,另一种是使用call方法。您可以通过以下方式使用call方法

var = Proc.new {|a| a*5}
var.call(12)

两种方法都会给您相同的结果。您最喜欢哪一个取决于您。