- def: 声明方法
- val: 声明函数
- 使用 _ 将 方法转为函数:
val func = method _
object AnswerApp {
/**
* 把 x 作为 func 函数的入参
*
* @param func 函数
* @param x 数字
* */
def calculate(func:Int => Int, x: Int): Unit = {
val r = func(x)
println(r)
}
// 定义一个函数. val func0 = (x : Int) => x * x
val func0: (Int) => Int = (x : Int) => x * x
// 定义了一个方法
def method(x:Int) : Int = {
x + 10
}
// 使用 `_` 将 方法 转换成 函数
val func1 = method _
def main(args: Array[String]): Unit = {
calculate(func0, 10)
// 通过 method _ 将方法转化成函数
calculate(func1, 10)
// 如果直接传递的是方法名称, scala相当于是把方法转成了函数
calculate(method, 10)
//通过 x => method(x) 的方式将方法转化成函数, 这个函数是一个匿名函数. 等价: (x: Int) => method(x)
calculate(x => method(x), 10)
calculate((x: Int) => x * x, 20)
}
}