scala方法和涵數的聲明以及方法轉換成涵數

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

相關文章
相關標籤/搜索