定义一个函数,计算2个数的和
要点:
1. 有一个箭头符号 =>
2. 省略def,省略了返回值类型
特殊的写法-简写
1. 函数体只有一行代码,可以省略 {}
2. 如果参数只使用了一次,那么可以用 _ 来代替。要加上参数的类型
object w07 {
def sum(x: Int, y: Int): Int = {
x + y
}
val sum1 = (x: Int, y: Int) => x +
val sum2 = (x:Int, y:Int) => x + y
val sum3: (Int,Int) => Int = { _ + _ }
val sum6 = (_:Int) + (_:Int)
def main(args: Array[String]): Unit = {
val a = 2
val n = 5
println(s"a = $a, n = $n, sum2(a, n) = ${sum2(a, n)}")
println(s"a = $a, n = $n, sum3(a, n) = ${sum3(a, n)}")
println(s"a = $a, n = $n, sum6(a, n) = ${sum6(a, n)}")
}
}
求a的n次方
object w08 {
def power(a: Double, n: Int): Double = {
if (n == 0) 1
else if (n > 0) a * power(a, n - 1)
else 1 / power(a, -n)
}
def main(args: Array[String]): Unit = {
println(power(2, 3))
println(power(5, -2))
println(power(2, 0))
}
}
把函数作为参数
object w09 {
val getMax = (x: Int, y: Int) => if (x > y) x else y
val getMin = (x: Int, y: Int) => if (x < y) x else y
val test = (x: (Int, Int) => Int, a: Int, b: Int) => {
println("test被调用")
println(x(a, b))
}
def main(args: Array[String]): Unit = {
test(getMax, 1, 2)
}
}