最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此
Scala中的Lambda表达式
在函数式编程中,函数是基本的构造块。Scala融合了java中的面向对象编程和函数式编程。在Scala中,一个lambda表达式是种叫做“函数”或者“函数文本”。Scala中的函数属于一等公民。它们可以被分配给vals或者vars(最终变量或者非最终变量),它们可以作为其他函数的参数,也可以组合成新的函数。
在Scala中一个函数文本写成如下形式:
1 |
|
举例来说,前面提到的java 用来计算两个字符串长度差的 lambda 表达式,在Scala中写作如下:
1 |
|
Scala中的函数文本也是闭包。它可以访问在直接词法作用域之外定义的变量。
1 2 3 4 |
|
这个例子结果是20.
正如你所见,我们将函数文本分配给了变量 myFuncLiteral。
java 8 的lambda表达式和Scala的函数文本在语法和语义上的相似性是十分明显的。从语义上讲它们是相同的,而语法上的唯一不同就是箭头符号(java8 ->, scala =>)和我们没有提到的简化符号。
引用:http://my.oschina.net/atttx123/blog/66425
时间: 2024-10-04 10:20:56