函数定义
Scala作为一门函数式语言,函数在其中的地位无疑是一等公民,接下来我们看看函数是如何定义的,来个简单的求大小:
scala> def max(x:Int, y:Int): Int={ if (x>y) x else y }
max: (x: Int, y: Int)Int
Scala的函数定义解释如下:
def 为函数定义的开始
max 为函数名
(x:Int, y:Int) 本例中的参数为两个,都为Int类型,并且必须指明参数类型,因为Scala编译器无法推断出函数参数类型,
: Int= 其中Int为函数的返回类型,也就是整个函数的结果类型:result type,在通常情况下可以不写结果类型,编译器可以推断出来的,但是也有例外,比如说递归的情形就必须显示的执行函数结果类型:
scala> def recursion (n:Int):Int={
| if ( n > 1){
| n* recursion (n-1)
| }else 1
| }
recursion: (n: Int)Int
当然,考虑到变成习惯,最好是显示的说明一下函数的结果类型,这样从阅读的角度来看,可读性提高很多。
{ if (x>y) x else y } 是函数体
上例提到的是有参数的函数,那么就应该有没有参数的函数,也没有返回值的函数,我们来看看编译器对于这样的函数是怎么解释的
scala> def helloWorle(){println("Hello,World")}
helloWorle: ()Unit
如大家所见,如果没有返回的参数,那么就不指定返回类型,并且在无结果类型的函数中,会出现如下提示
helloWorle: ()Unit Unit就相当于Java中的void,代表的就是无返回值—可以做个类比,便于吸收