lambda表达式

lambda表达式本质上是一个匿名函数,java中lambda表达式是从接口扩展而来,但对接口方法有严格要求,它要求在实现Lambda表达式的接口中只有一个抽象方法。这个方法称为sam(single abstract method),即单个抽象方法,能够使用Lambda表达式的接口称为“功能性接口”,如何对“功能性”接口进行语法检查,加一个注解@FunctionInterface。Scala中lambda表达式是一等公民,有def这样的高级类型接口,所以可以随意使用
  • 在Scala中一个函数文本写成如下形式:
    (argument) => //funtion body
    eg: 计算两个字符串长度差 :
    (s1: String, s2 :String) => s1.length - s2.length
    Scala中的函数文本也是闭包。它可以访问在直接词法作用域之外定义的变量。
val outer =10
val myFuncLiteral = (y: Int) => y * outer
val result = myFuncLiteral(2)
> 20

我们将函数文本分配给了变量 myFuncLiteral。
java 8 的lambda表达式和Scala的函数文本在语法和语义上的相似性是十分明显的。从语义上讲它们是相同的,而语法上的唯一不同就是箭头符号(java8 ->, scala =>)和没有提到的简化符号。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容