Scala函数

一、函数的定义:

def sum(num:Int):Int = { 
    num + 1 
}

我们类比一下变量的定义,变量有类型和变量名。比如 var str:String = "func" ; 

str为变量名,String为他的类型,"func"为他得值。类比到函数上就是这样:

sum为函数名,

Int => Int 就为函数的类型,

(num:Int) => {num + 1} 就是函数的值。有没有发现这其实是一个匿名函数? (注意这个值的前半部分要加括号括起来)

总感觉这样说不太生动,还是举例子吧:

val s = (num:Int) => num + 1
    
print(s(5))

因为Scala有类型自动推断,我们将函数的"值"赋给变量s 就会自动推断为一个类型为 Int => Int 的函数,我们可以通过调用它来证明这个结论。

二、高阶函数

有了上边的推断我们来看一下简单的高阶函数:

def aa(f:(Int,Int)=>Int,a:Int,b:Int):Int={
    return f(a,b)
  }

我们有这样一个函数,他的参数类型为((Int,Int)=>Int, Int, Int),返回值为Int,也就是说它的参数有三个,一个函数类型的参数,两个Int类型的参数。接下来我们要使用他,为了更好地说明函数的“值“这一概念,我们结合最开始定义的sum函数:

使用sum函数:

 val num = 5
    val i  = sum(num)
    val j  = sum(5)

接下来我们再看aa函数的使用:

 val i: Int = aa(fun,9,8)
 val j: Int = aa((a:Int,b:Int) => {a+b},5,6)

fun函数:

def fun(a:Int, b: Int):Int={
    return a+ b
  }

aa的函数参数我们可以使用定义好的函数,也可以使用函数的“值”来使用,就和num 和 5一样一个是定义好的变量,一个是“值”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章