Scala运算符及函数和方法的调用

Scala中的+ - * / %等运算操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。
由于和java使用基本相同,这里不再赘述。可参考:
https://www.yiibai.com/scala/scala_operators.html

但有一点特别的:这些操作符在scala中实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b可以写成 a.方法(b)。
Scala基础02-Scala方法和函数及其区别

方法的调用(2.后面按下table,会有以下相关提示)
Scala基础02-Scala方法和函数及其区别

定义方法和函数

1 定义方法

def m1(x:Int,y:Int):Int=x+y

定义方法用def关键字,m1为方法名称,x:Int 和 y:Int为参数列表,后面的Int为返回值类型,x+y为方法体。
方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型。

示例:通过递归方法求一个数的阶乘。

def m3(x:Int):Int={
if(x==1) 1
else x*m3(x-1)
}

Scala基础02-Scala方法和函数及其区别

2 定义函数

定义函数的基本语法:
val f1=(x:Int,y:Int)=>x*y
//调用:
f1(3,4)
Scala基础02-Scala方法和函数及其区别

3 方法和函数的区别

函数是一个对象,有N个参数,就继承FunctionN这个类。共到Function22,函数最多可以带22个参数。
Scala基础02-Scala方法和函数及其区别

函数具备该对象的一些方法:
apply curried toString tupled
Scala基础02-Scala方法和函数及其区别

而方法就是指方法就是对象中的方法。不具备函数的以上特性。

4 方法转换成函数

如果想把方法转换成一个函数,可以用方法名,后面跟上下划线的方式。

val 函数=方法名_

相关文章: