`

Ruby1.9 lambda操作符

    博客分类:
  • Ruby
阅读更多
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
分享到:
评论

相关推荐

    透视Ruby 1.9的Lambda函数

    Ruby的Block块是它的关键特色之一,用块能够写出简明且高度可重用的算法。即使没有别的用处,它至少消弱了人们对循环敬畏的态度。这个概念在其他语言和理论中还被称为:Lambda函数。Lambda是个十分令人迷惑的词汇,...

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

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次... 表达式和操作符  语句和控制结构  Method、proc、lambda和closure  类和模块  反射和元编程

    aws-ruby-lambda-layer:包括普通Ruby宝石的一层

    此回购展示了如何包括Ruby原生宝石 注意力 直接在aws lambda中使用api通常是一种不好的做法。 因为它将很快消耗过多的连接。 如何使用 建立档案 $ ./build.sh 部署到aws $ sls deploy 然后查看并配置您的lambda以...

    Ruby编程语言pdf

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

    ruby-on-lambda, 自动化脚本,帮助运行 ruby 2.1程序.zip

    ruby-on-lambda, 自动化脚本,帮助运行 ruby 2.1程序 上的 ruby为什么?因为:AWS的Lambda具有巨大的潜在意义和有趣的含义AWS的Lambda还没有正式支持 ruby,因为ruby 具有巨大的潜在意义和有趣的含义 !?通过:将一...

    Ruby编程语言

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

    ruby-vips-lambda:适用于Ruby Libvips Gem的AWS Lambda层

    ruby-vips-lambda:适用于Ruby Libvips Gem的AWS Lambda层

    jdk1.8 Lambda表达式

    自已整理完全版最长用的lambda,基中包括lamnda介绍简答实体及多线程list,map相互转换等等。

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

    最近在学习lambda演算的相关内容,由于资料不全,学习的过程很是痛苦,下面这篇文章主要给大家介绍了关于如何利用Ruby简单模拟Lambda演算的相关资料,需要的朋友可以参考借鉴,下面来随着小编一起学习学习吧。

    2_Lambda表达式.zip

    2_Lambda表达式.zip2_Lambda表达式.zip2_Lambda表达式.zip

    i18n:Ruby的基本国际化(i18n)库

    特征: 翻译和本地化将值插入到翻译中(与Ruby 1.9兼容的语法) 复数(兼容CLDR ) 可定制的音译为ASCII 灵活的默认值批量查询lambdas作为翻译数据自定义键/范围分隔符自定义异常处理程序具有可交换后端的可扩展...

    LAMBDA(MATLAB)

    名鼎鼎的LAMBDA算法,MATLAB版本,源码+说明手册manual,不可多得。 得到模糊度固定解和协方差,并且可以得到固定解的test ratio。多种方法可选。

    PS Lambda 1.0_lambda_GNSS_SDR_GNSS_computing_PSLambda_

    PS Lambda code

    java8lambda表达式Demo

    java8lambda表达式的安卓Studio工程Demo,供初步学习使用

    C++之Lambda研究.pdf

    Lambda代码段实际为一个编译器生成的类的“operator ()”函数,编译器会为每一个Lambda函数生成一个匿名的类(在C++中,类和结构体实际一样,无本质区别,除了默认的访问控制)。  对Lambda的最简单理解,是将它...

    Ruby中proc和lambda的两个区别

    主要介绍了Ruby中proc和lambda的两个区别,本文讲解了在proc和lambda中,return关键字有不同含义、检查参数的方式不同两个重要区别,需要的朋友可以参考下

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

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

    在Python中使用lambda高效操作列表的教程

    Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错 result = lambda x: x * x result(2) # return 4 map()/filter()/reduce() 需要两个参数,第一个是一个处理函数,第...

    if:在 Ruby 中实现 if 而不使用关键字

    该库在 Ruby 1.8.7 及更高版本上进行了测试,但受益于 Ruby 1.9 的哈希和 lambda 文字语法。 "truthy" . if -> { "I'm true!" } , else : -> { "I'm false!" } # vs. "truthy" . if proc { "I'm true!" } , :else ...

Global site tag (gtag.js) - Google Analytics