`
ddl1st
  • 浏览: 99351 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby 中 Proc 和 lambda 的区别

    博客分类:
  • Ruby
 
阅读更多
def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  f = lambda { return "return from lambda" }
  f.call # control does not leave bar here
  return "return from bar" 
end


puts foo # prints "return from foo from inside proc" 

puts bar # prints "return from bar" 


从中可以看出 Proc.new 中的block 执行的时候当作方法内的一个片段代码去执行,  而lambda则是在block已经执行完成了.    
通俗的说就是 Proc返回的是block内还未执行的代码, 而lambda返回的则是block已经执行完成的结果.
分享到:
评论

相关推荐

    Ruby中proc和lambda的两个区别

    在Ruby编程语言中,`Proc` 和 `lambda` 都是用来创建匿名函数或者代码块的两种方式,它们在很多方面都是相似的,但有两点重要的区别。这些差异主要体现在`return`关键字的行为以及参数检查的方式上。 首先,我们来...

    Ruby中的block、proc、lambda区别总结

    在规则引擎中,Ruby 的闭包使用特别频繁,而且有 block,Proc和 lambda 等后几种形式的用法,很让人困惑。为了深入理解代码,再次认真学习了一下 Ruby 的闭包,特别是 block,proc 和 lambda 几种用法的异同,这次的...

    如何利用Ruby简单模拟Lambda演算详解

    在Ruby中,尽管我们有丰富的数据类型和类,但通过巧妙使用Proc对象和Lambda表达式,理论上可以模拟出各种数据结构和运算。 通过以上的讨论和实践,我们可以理解如何在Ruby这种高级编程语言中实现Lambda演算的基本...

    透视Ruby 1.9的Lambda函数

    在Ruby 1.9之前,创建Lambda函数的方式较为繁琐,如使用`Proc.new`或`lambda`。Lambda与Block相似,但有一些重要的区别,例如Lambda在处理参数数量不匹配时会抛出异常,而Block则会尝试适应。此外,Lambda对return...

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合... Method、proc、lambda和closure  类和模块  反射和元编程

    ruby中文文档

    3. **块、 Proc 和 Lambda**:Ruby中的块是一段可以被传递和执行的代码,类似于其他语言中的闭包或匿名函数。Proc和Lambda是两种表示代码块的数据结构,它们可以存储和调用代码块,而且在行为上与函数类似。 4. **...

    Ruby v2.6.3 正式版

    4. **闭包**:Ruby的Proc和Lambda实现了闭包的概念,它们能记住定义时的作用域,即使在其他作用域中调用也能访问这些变量。 5. **模块(Module)**:Ruby的模块用于封装相关的类和方法,实现代码复用和命名空间管理...

    Ruby编程语言pdf

    在对Ruby进行了简要的综述之后,本书详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。 本书还包含对Ruby平台上...

    ruby中文文档.chm

    Ruby中的块(Block)、 Proc 和 Lambda 是其元编程能力的重要体现。它们允许你在运行时创建和修改代码,这在编写高度定制和自适应的程序时非常有用。文档会详细介绍这些概念及其在实际编程中的应用。 此外,Ruby...

    Ruby中使用Block、Proc、lambda实现闭包

    Ruby中的闭包实现有:Block,Proc,Lambada。 首先,我们来看Block。 代码如下: ary = [1,2,3,4] ary.collect! do |a|  a*a end ary.each do |a|  puts a end 这段代码,我们使用了Array对象的block方法,将ary中...

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby的块(block)、 Proc 和 Lambda 是实现回调和高阶函数的关键。 元编程是Ruby的一大特色,它允许你在运行时修改代码。Ruby提供了许多工具来进行元编程,如`eval`函数可以执行字符串中的代码,`class_eval`和`...

    ruby trap 初学者使用

    "Ruby Trap"这个标题暗示了这是一本关于Ruby编程中常见问题和陷阱的电子书,旨在帮助初学者避免在学习过程中遇到的困扰。下面,我们将深入探讨一些可能涵盖在书中的Ruby编程知识点。 1. **变量和常量**: - Ruby有...

    Ruby语言开发教程与案例.zip

    3. **块、 Proc 和 Lambda**:Ruby支持块(block),这是一种在代码中定义可重复使用的匿名函数的方式,Proc和Lambda是块的两种表示形式,它们可以捕获上下文并作为对象传递。 4. **闭包**:Ruby的Proc和Lambda都是...

    ruby中文文档 初学者入门

    6. **块、Proc和Lambda**:Ruby中的块是代码块,可以作为参数传递给方法,Proc和Lambda是两种可调用的对象,它们可以捕获上下文,类似于函数。 7. **数组和哈希**:数组是有序的元素集合,可以通过索引访问;哈希是...

    Best of Ruby Quiz

    4. **闭包和Lambda**:Ruby的Proc和Lambda可以实现闭包,即能捕获并保存其定义时的环境。它们之间的区别也是Ruby程序员必须了解的重要概念。 5. **元编程**:Ruby的元编程能力强大,如`send`方法、类方法定义、`...

    Ruby中文参考手册

    2. **控制结构**:Ruby中的流程控制有if/else、case、while/until循环、for循环以及块(Proc和Lambda)的使用,这些都是编写逻辑代码的关键部分。 3. **面向对象**:Ruby是面向对象的,每个值都是一个对象。它支持...

    Ruby API 帮助文档.zip

    3. **块、 Proc 和 Lambda**: Ruby支持块(block)、Proc和Lambda,它们都是代码的封装形式。块是通过花括号 `{}` 或 `do..end` 定义的一段代码;Proc是可存储的代码块,可以赋值给变量;Lambda更接近函数,关注参数...

    Ruby语言中文教程

    5. 高级语法:Ruby拥有丰富的语法结构,如块(block)、 Proc 和 Lambda,这些使得代码可读性和可维护性更高。 6. 标准库丰富:Ruby的标准库包含了大量预定义的类和模块,涵盖了网络通信、文件操作、日期和时间处理...

Global site tag (gtag.js) - Google Analytics