當某個特質被用於組合類時,被稱為混入。
/* 這是乙個抽象類 */
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...