Ruby 什么是过程和lambdas?请举例说明
可能重复:Ruby 什么是过程和lambdas?请举例说明,ruby,lambda,block,proc,Ruby,Lambda,Block,Proc,可能重复: (我知道有人问了好几次,但我找不到满意的答案)有人能解释一下块、proc和lambda以及为什么应该使用一个而不是另一个,应该使用proc、类似和/或lambda的情况是什么。对计算机内存也有影响。请提供实例。试试或 为了更多的基础,我建议你阅读。本指南负责创建许多当今Ruby的Pro!一定要看一看 解释 另一个重要但微妙的区别在于使用lambda创建的过程和使用Proc.new创建的过程处理return语句的方式: 在lambda创建的过程中,return语句仅从过程本身返回
(我知道有人问了好几次,但我找不到满意的答案)有人能解释一下块、proc和lambda以及为什么应该使用一个而不是另一个,应该使用proc、类似和/或lambda的情况是什么。对计算机内存也有影响。请提供实例。试试或 为了更多的基础,我建议你阅读。本指南负责创建许多当今Ruby的Pro!一定要看一看 解释 另一个重要但微妙的区别在于使用
lambda
创建的过程和使用Proc.new
创建的过程处理return
语句的方式:
- 在
创建的过程中,lambda
语句仅从过程本身返回return
- 在
创建的Proc中,Proc.new
语句更令人惊讶:它不仅从Proc返回控制权,,而且从包含该Proc的方法返回控制权强>return
lambda
-创建的进程返回
正在运行。它的行为方式可能是您所期望的:
def whowouldwin
mylambda = lambda {return "Freddy"}
mylambda.call
# mylambda gets called and returns "Freddy", and execution
# continues on the next line
return "Jason"
end
whowouldwin
=> "Jason"
现在这里有一个新的Proc.new
-创建的Proc的返回
做同样的事情。您将看到其中一个案例,其中Ruby打破了备受吹嘘的最小意外原则:
def whowouldwin2
myproc = Proc.new {return "Freddy"}
myproc.call
# myproc gets called and returns "Freddy",
# but also returns control from whowhouldwin2!
# The line below *never* gets executed.
return "Jason"
end
whowouldwin2
=> "Freddy"
由于这种令人惊讶的行为(以及更少的打字),我倾向于在制作程序时使用
lambda
,而不是Proc.new
。你看过这一个吗?谷歌第一个关于?