scala之混入 高階函式

2021-10-01 16:56:04 字數 1142 閱讀 2579

當某個特質被用於組合類時,被稱為混入。

/* 這是乙個抽象類 */

abstract class a

/* 這是乙個類,實現了抽象類a */

class b extends a

/* 這是乙個特質,居然還可以繼承自乙個抽象類 */

trait c extends a

/* 乙個類實現乙個介面使用extends;

如果這個類有父類(使用extends);介面要換成with

*/class d extends b with c

val d = new d

println(d.message) // i'm an instance of class b

println(d.loudmessage) // i'm an instance of class b

高階函式是指使用其他函式作為引數、或者返回乙個函式作為結果的函式。在scala中函式是「一等公民」,所以允許定義高階函式。這裡的術語可能有點讓人困惑,我們約定,使用函式值作為引數,或者返回值為函式值的「函式」和「方法」,均稱之為「高階函式」。

說白了:就是方法的引數或者返回值,居然還可以是乙個函式(高階函式)

/* **********高階函式**********

* 方法的引數是函式;

* 方法的返回值也可以是函式

* */

var list2 = list(1,35,73,10)

/* 第一種寫法 */

var doubleint = (t:int) =>

;list2.foreach(doubleint)

/* 第二種寫法 */

list2.foreach( t =>

);/* 第三種寫法

* =>左半已經可以自動推斷引數的型別,那就可直接省略掉

* _不能和其它型別運算

* */

list2.foreach( println(_) )

/* 柯里化 foldleft:計算和

*/ var result = list2.foldleft(0)(_ + _);

println("----result----" + result )

Scala高階函式

在scala中,無法直接操縱方法,只能直接操縱函式,所以需要使用 import scala math.val temp ceil val num 3.14 println fun temp num temp的型別是 double double,意為接受double引數並返回double的函式。能夠對...

Scala 高階函式

import scala.math.val num 3.14val func ceil 意味著確實指的是這個函式,而不是忘記了傳引數 func是乙個函式變數,內容儲存的是個函式 val v func num println v val arr array 1.0,3.14,4 map func 將函...

Scala高階函式

高階函式 higher order function 高階函式可以使用其他函式作為引數,進入方法內使用,或者使用函式輸出結果作為引數。object demo 函式1,返回當前時間納秒數,long型別 def time t long 可以簡寫為t long,long表示如果傳入引數為方法時返回值為lo...