我们在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变量内创建了一个proc。proc的目的是计算用户输入的元素总数。这些元素在||中指定 并且所有处理都在{}块内完成。我们只是在方括号的帮助下调用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)
两种方法都会给您相同的结果。您最喜欢哪一个取决于您。