方法和函数
Scala 中的+ - * / %等操作符的作用与 Java 一样,位操作符 & | ^ >> <<也一样。
只是有一点特别的:这些操作符实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b 可以写成
a.方法(b)
要理解
.的用法
定义方法
定义方法
函数的意义:表示接受两个 Int 类型的变量,然后做累加。
经过 scala 的自动类型推断得知,最后返回的结果数据的类型也是 Int。
Function2 中 2 表示这个函数接收的参数个数是 2 个。
方法和函数的区别
1、函数可以作为参数传递给方法,也就是说函数可以作为方法的参数,在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作
案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
2、函数可以作为方法的参数,但是也可以作为函数的参数,例如:
3、方法也可以作为方法的参数。在需要传入函数作为参数的位置上传入一个方法的话,那么这个方法会被自动的转换为函数作为参数,也可以通过“_”把方法转换为参数
4、方法也可以作为函数的参数。其实,原理就是方法会被自动转换为函数,所以也就是传入一个函数到一个函数作为参数。
package com.auru.Leon
object MethodAndFunctionDemo {
//定义一个方法
//方法 m2 参数要求是一个函数,函数的参数必须是两个 Int 类型
//返回值类型也是 Int 类型
def m1(f: (Int, Int) => Int) : Int = f(2, 6)
// 定义一个计算数据不被写死的方法
def m2(f: (Int, Int) => Int, x:Int, y:Int) : Int = f(x, y)
// 定义一个需要两个 Int 类型参数的方法
def m3(x:Int, y:Int):Int = x + y
//定义一个函数 f1,参数是两个 Int 类型,返回值是一个 Int 类型
val f1 = (x: Int, y: Int) => x + y
//再定义一个函数 f2
val f2 = (m: Int, n: Int) => m * n
//main 方法
def main(args: Array[String]) {
//调用 m1 方法,并传入 f1 函数
val r1 = m1(f1)
println(r1)
//调用 m1 方法,并传入 f2 函数
val r2 = m1(f2)
println(r2)
// 调用 m2 方法, 传入 f1 函数
val result1 = m2(f1, 2, 4)
println(result1)
// 调用 m2 方法,传入 f2 函数
val result2 = m2(f2, 2, 4)
println(result2)
// 调用 m2 方法, 传入 mm 方法作为参数
println(m2(m3, 2, 4))
}
}