scala 普通函数和匿名函数即lambda 表达式
函数function / 方法method 的定义 基本语法
def 函数名 ([参数名: 参数类型], ...) [[: 返回值类型] =] {
语句...
return 返回值
}
1. 函数声明关键字为def (definition)
2. [参数名: 参数类型], ...:表示函数的输入(就是参数列表),可以没有。 如果有,多个参数使用逗号间隔
3. 函数中的语句:表示为了实现某一功能代码块
4. 函数可以有返回值,也可以没有
5. 返回值形式1: : 返回值类型 =
6. 返回值形式2: = 表示返回值类型不确定,使用类型推导完成
7. 返回值形式3: 表示没有返回值,return 不生效
8. 如果没有return,默认以执行到最后一行的结果作为返回值
// 定义函数
def getRes(n1: Int, n2: Int, oper: Char) = {
if (oper == '+') {
n1 + n2 // 返回
} else if (oper == '-') {
n1 - n2
} else {
// 返回null
null
}
}
匿名函数
val triple = (x: Double) => 3 * x
println(triple(3))
说明:
1. (x: Double) => 3 * x 就是匿名函数
2. (x: Double) 是形参列表,=> 是规定语法表示后面是函数体,3 * x 就是函数体,如果有多行,可以 {} 换行写.
3. triple 是指向匿名函数的变量。
区别:
1. 匿名函数不需要写返回值类型,Scala 自动类型推导,一般函数的= 变成了=>。
2. 匿名函数不需要写def,总体而言根JavaScript 的箭头函数很类似。
参考:《尚硅谷_韩顺平Scala》http://www.atguigu.com/download_detail.shtml?v=61