Scala中的函数表达式

 

 

    最近看Spark的东西,因为以前没有接触过lambda函数表达式,因此搜了点资料,特意纪录在此java

 

Scala中的Lambda表达式

在函数式编程中,函数是基本的构造块。Scala融合了java中的面向对象编程和函数式编程。在Scala中,一个lambda表达式是种叫作“函数”或者“函数文本”。Scala中的函数属于一等公民。它们能够被分配给vals或者vars(最终变量或者非最终变量),它们能够做为其余函数的参数,也能够组合成新的函数。
在Scala中一个函数文本写成以下形式:
?
1
(argument) = > //funtion body

 

举例来讲,前面提到的java 用来计算两个字符串长度差的 lambda 表达式,在Scala中写做以下:
?
1
(s 1 : String, s 2 : String) = > s 1 .length - s 2 .length

 

Scala中的函数文本也是闭包。它能够访问在直接词法做用域以外定义的变量。
?
1
2
3
4
val outer = 10
val myFuncLiteral = (y : Int) = > y * outer
val result = myFuncLiteral( 2 )
> 20

 

这个例子结果是20.
正如你所见,咱们将函数文本分配给了变量 myFuncLiteral。
java 8 的lambda表达式和Scala的函数文本在语法和语义上的类似性是十分明显的。从语义上讲它们是相同的,而语法上的惟一不一样就是箭头符号(java8 ->, scala =>)和咱们没有提到的简化符号。
 
引用:http://my.oschina.net/atttx123/blog/66425
相关文章
相关标签/搜索