字面量是一个常量,它可以在编译的过程中进行类型的确定。下面通过Scala的函数字面量定义及作用等相关介绍进一步说明Scala的函数的高级特性。
1.Scala的函数字面量语法
Scala的函数字面量语法为:
(参数列表)=> {方法体}
与定义函数的语法相比,它省略了def关键字、函数名以及函数的返回类型。在Scala的函数字面量的定义中直接把参数列表与方法体通过=>相连。例如定义一个函数字面量对输入变量加1并返回,即(x:Int)-=>{x+1}。由于Scala的函数字面量没有定义函数名,所以又把这种函数字面量称为匿名函数。
2.Scala的函数字面量作用
由于Scala的函数字面量没有定义函数名,所以可以通过变量进行调用。另外,也可以通过参数的方式进行调用,关于这种方式的介绍将在Scala的函数高阶中进一步说明,这里不再展开叙述。
3.Scala的函数字面的简化
Scala的函数字面量的简化有两种方式,第一种方式为:_(占位符)。如果函数中的参数在方法体中只使用一次,可以用_(占位符)替换,这种方式比较常用。当使用_(站位符)替换变量时,需要指明变量的类型。
第二种方式为:只有一个表达式时,可以省略括号。当函数体中只有一个表达式时,可以省略括号。例如,可以把(x:Int)=>{x+1}简写成(x:Int)=>x+1
object Test14 {
def sum(x:Int,y:Int):Int={
x+y
}
def main(args: Array[String]): Unit = {
//定义函数的新方式:字面量方式
//好处:简单,方便
var sum1 = (x:Int,y:Int) => {
x+y
}
//简写1:代码只有一句,可以省略{}
var sum2 = (x:Int,y:Int) => x+y
//简写2:形参可以使用占位符来代替
// (Int,Int)=>Int 表示一种类型,是一个函数,需要两个int类型的参数,返回一个int类型的结果
var sum3:(Int,Int)=>Int= _ + _
//var res = sum2(100,200)
var res = sum3(200,200)
print(res)
}
}