scala方法和涵數的聲明以及方法轉換成涵數:spa
方法聲明:scala
scala> def m1(x:Int, y:Int) : Int = x + yio
m1: (x: Int, y: Int)Intfunction
scala> m1(3,4)方法
res9: Int = 7數據
x + y爲涵數體 co
涵數聲明:background
scala> val f1 = (x: Int, y: Int) => x + y參數
f1: (Int, Int) => Int = <function2>
(Int, Int)參數類型
黃色是返回類型,後面的 <function2>表示兩個參數的一個涵數,x + y爲涵數體
scala> def m2(f:(Int,Int)=>Int) = f(3,4)
m2: (f: (Int, Int) => Int)Int 定入的一個方法m2而且方法的參數是一個涵數類型的參數,後面是方法的實現體
scala> val f1=(x:Int,y:Int) => x+y
f1: (Int, Int) => Int = <funtion2>定義一個有兩個參數的涵數 f1,作爲方法m2的參數傳入方法體
scala> m2(f1) 方法裏面傳入涵數名調用(即scala能夠將一個涵數當作參數進行傳入)
res10: Int = 7
方法轉換爲一個涵數;
scala> def m1(x:Int,y:Int):Int=x+y //定義一個兩個參數爲int類型且返回類型也是一個int的一個方法m1
m1: (x: Int, y: Int)Int
scala> val f1 = m1 _ //將m1轉換成涵數據並用 f1 接收 方法名+空格+下劃線
f1: (Int, Int) => Int = <function2>
而後就能夠調用 m2(f1)
scala> m2(f1) 傳入轉換過的涵數
res12: Int = 7
scala> m2(m1) 直接傳入方法也沒有報錯是由於scala內部自動隱式轉換成了涵數後當作m2方法的參數傳入的,這有個隱式轉換過程
res13: Int = 7