Ruby1.9提供了lambda操作符,使得lambda表达式更像匿名函数。lambda表达式更像method,而block更像Proc,主要表现在:local return,break以及参数传递规则。
lambda更像method,所以支持默认参数:
1.8的lambda表达式:
succ = lambda{|x| x+1}
1.9使用lambda操作符->
succ = ->(x){ x+1 }
我们看这个显得更为自然,和匿名函数格式一样:
js的匿名函数:
succ = function(x){ return x+1; }
作为参数:
def compute(x,y,func)
put func.call(x,y);
end
compute(1,2,->(x,y){x+y});
compute(1,2,->(x,y){x*y});
函数复合:
def compose(f,g){
->(x){f[g[x]]} #->(x){f.call(g.call(x))}
}
succOfSquare = compose(->(x){x+1},->(x){x*x})
默认参数:
lamb = ->(x,y=10){x * y}
lamb.call(10) #=> 100
lamb.call(10,100) #=> 1000
分享到:
相关推荐
3. **块语法改进**:Ruby 1.9允许块使用`&`操作符转换为 Proc 对象,使块可以被赋值给变量并存储起来,增强了代码复用性。同时,`do..end`块与单行块的语法更加一致。 4. **元编程增强**:Ruby 1.9增强了元编程能力...
《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次... 表达式和操作符 语句和控制结构 Method、proc、lambda和closure 类和模块 反射和元编程
在对Ruby进行了简要的综述之后,本书详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。 本书还包含对Ruby平台上...
在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...
- Ruby 1.9以后版本引入了Green Thread,提供轻量级线程,但并非真正的并发,因为Ruby解释器在MRI实现中使用全局解释器锁(GIL)。 - Fiber:用于实现协程的结构,允许用户控制线程的切换。 学习Ruby语言,不仅...
16. Lambda与Hash:遵循Ruby 1.9的语法标准。 三、命名规范 1. 变量和方法:小写字母加下划线。 2. Module和Class:首字母大写。 3. 常量:全大写字母加下划线。 4. boolean方法:加问号后缀。 5. 风险方法:加感叹...