`

block, lambda, proc的区别

    博客分类:
  • ruby
阅读更多

The second difference is that lambdas have diminutive returns. What this means is that while a Proc return will stop a method and return the value provided, lambdas will return their value to the method and let the method continue on. 

 

http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/

 

http://blog.neten.de/posts/2013/02/17/ruby-block-proc-and-lambda/

 

https://ruby-china.org/topics/20656

 

def return_from_proc
  ruby_proc = Proc.new { return "return from a Proc" }
  ruby_proc.call
  return "The function will NOT reach here because a Proc containing a return statement has been called"
end

def return_from_lambda
  ruby_lambda = lambda { return "return from lambda" }
  ruby_lambda.call
  return "The function will reach here"
end

puts return_from_proc # display return from proc
puts return_from_lambda # display The function will reach here

 

分享到:
评论

相关推荐

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

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

    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 1.9的Lambda函数

    Lambda与Block相似,但有一些重要的区别,例如Lambda在处理参数数量不匹配时会抛出异常,而Block则会尝试适应。此外,Lambda对return操作的处理也有所不同,它会返回到调用Lambda的地方,而Block则会返回到Block所在...

    ruby基础教程(第四版)第21章 Proc类1

    理解Proc和`lambda`的区别以及如何使用它们是Ruby编程中的重要概念,这有助于编写更灵活和可维护的代码。Proc对象和闭包的特性使得我们能够在函数式编程中利用高阶函数,以及在处理回调、事件驱动编程等方面发挥重要...

    深入理解Ruby中的代码块block特性

    本文深入探讨了Ruby中的代码块(block)特性,从Block的基础定义出发,介绍了其与Lambda的关系、作为方法参数的应用、`yield`关键字的使用、Block与方法之间的转换,以及Block作为对象的本质。通过这些知识点的学习...

    详解Ruby中的代码块对象Proc

    在Ruby编程语言中,代码块(block)是一种非常重要的特性,它允许程序员定义一段可执行的代码,并在需要时调用。然而,由于代码块本身不是对象,有时我们需要将其转换为对象以便于存储、传递或作为参数使用。这就是...

    深入理解Ruby中的block概念

    此外,Ruby提供了`lambda`和`proc`来将block转换为Proc对象,Proc是Ruby中的一个类,代表可调用的代码块,这样就能够在需要的时候将block当作函数处理。与block相比,`lambda`更接近于JavaScript中的函数,因为它更...

    multi_block:将多个块传递给 Ruby 方法

    多块 MultiBlock 是一个迷你框架,用于将多个块传递给方法。 它使用以简单的语法完成此操作。 接收方法可以产生所有块...yield :success # calls :success proc without args yield :success , "Code Brawl!" # calls

    Ruby语言中文教程

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

    Ruby中文文档

    Ruby的块(Block)、 Proc 和 Lambda是其强大的函数式编程工具。块可以看作是一段可执行的代码,常常与迭代器配合使用。Proc对象是块的封装,它可以被存储和传递。Lambda与Proc类似,但更强调函数行为,比如它们的...

    ruby开发答疑借鉴.pdf

    此外,Ruby支持块(block)、 Proc 和 Lambda,它们是代码块的不同表示形式,有着不同的行为特性。Proc和Lambda更类似于函数,它们可以被赋值给变量,作为参数传递,甚至可以作为返回值。Ruby的这些特性使得它可以...

    Ruby语言中文教程.rar

    Proc和Lambda是可存储的代码块,它们的行为类似函数,但有细微差别,如 Proc 在块调用时忽略参数数量,而Lambda会检查参数匹配。 6. **符号(Symbol)**:Ruby特有的符号类型,它是不可变的,每个符号在内存中只有...

    ruby基础学习资料

    方法、Proc和Lambda都体现了闭包特性,它们能记住定义时的作用域,即使在其他地方调用也能访问那些变量。 10. **元编程**: Ruby的元编程能力强大,允许在运行时动态地修改类和对象。例如,`method_missing`方法...

    Ruby语言入门教程v1.0.pdf

    4. 函数:Ruby中的函数定义使用`def`关键字,可以返回多个值,支持块(block)和 Proc 对象。 5. 类与对象:Ruby是面向对象的语言,一切皆对象。类用于定义对象的行为和属性,使用`class`关键字创建。 二、Ruby...

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

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

    Ruby-RubyChina社区的精华帖

    2. **块(Block)、 Proc 和 Lambda**:Ruby支持块(匿名函数)的定义和使用,Proc和Lambda是块的两种可存储形式,它们之间的区别在于调用时的参数处理和返回行为。 3. **元编程(Metaprogramming)**:Ruby的强大...

    Ruby程序设计(word文档).zip

    方法可以通过`def`关键字定义,使用`return`返回值,支持块(Block)和 Proc 对象,以及定义默认参数和可变参数。 4. **类与对象**:Ruby是完全面向对象的语言,一切皆为对象。每个实体都属于某个类,通过`class`...

    Ruby API 帮助文档.zip

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

    函数式-确定性-Ruby取笑___下载.zip

    10. **Proc和Lambda**:两者都是Ruby中的匿名函数,Proc更灵活,而Lambda更接近于函数的行为,如检查参数数量和强制返回。 通过这些函数式编程技术,Ruby程序员可以编写出更加简洁、可读性强的代码,同时减少错误的...

Global site tag (gtag.js) - Google Analytics