文章列表
Procs and Lambdas(2)
- 博客分类:
- ruby
proc是block的对象形式,它的行为像是一个block,lambda和proc之间有些细小的差别,lambda更像一个方法,而不是一个block,调用一个proc就像yield一个block,调用一个lambda就像在调用一个方法(当然还是有区别的),在ruby1.9里,你可以使用lambda?来查看这个对象究竟是一个lambda还是一个proc。下面,是proc和lambda的一些区别:
1,Return in blocks,procs,and lambdas
在一个block或proc中执行return,程序将从包含这个block或proc的方法中返回
def test
pu ...
block在ruby里是一个词詓的概念,它不是对象,不能被对象操作,但是它能通过一个proc或者是一个lambda表现出来。Procs的行为像block(block-like behavior),lambdas的行为更像一个方法(method-like behavior)。但是两者都是Proc对象,这点可以通过使用class方法看出来。
创建Proc对象:
1,通过使用&前缀的方法参数创建一个proc
def makeproc(&p) # Convert associated block to a Proc and store in p
p ...
- 2009-08-24 13:34
- 浏览 1181
- 评论(0)
方法是一个有参数,有名字并且和对象关联的代码块,对象(更确切叫法是消息的接收者)调用方法,返回方法中最后一个表达式(ruby中基本上没有语句的概念,全是表达式)的值。很多语言都区分方法和函数,方法和对象相关。在ruby中,一切都是对象,即使你定义一个全局的函数,看上去不和任何对象关联,而实际上它被严格的定义为Object类的私有方法
irb(main):012:0> def hello
irb(main):013:1> end
=> nil
irb(main):014:0> Object.private_methods.grep :hello
=> [:h ...
- 2009-08-19 20:44
- 浏览 1076
- 评论(1)