scala類型系統:24) 理解 higher-kinded-type
阿新 • • 發佈:2018-06-08
簡單 div .info AS 是個 類型系統 基本 inf upload
首先我們從最基本的泛型來看:
現在我們對上面泛型中的類型參數再進一步,也是個泛型會如何呢?
可以看到,java中不支持類型參數也是泛型類型的情況,而scala支持。這是一個很重要的區別,scala在類型系統上要比java強大。我們現在簡單對類型歸納一下,可以分為兩類:
現在我們來看 higher-kinded-type ,先要理解 kind 是什麽意思,如果說類型(type)是對數據的抽象,比如1,2,3等抽象為Int類型,”hello”,”wolrd”等可抽象為String類型。那麽kind則是對類型的抽象。
proper type 用 * 號表示:
泛型類型(用於構造proper type的類型)則可以用下面的方式表示,比如 Set[T], List[T],
再如 Pair[K,V] 泛型類型
如果泛型類型中的參數類型又是一個泛型,比如前邊的 List2
這種類型參數也是泛型類型的類型,稱之為高階(higher)kind,是不是很像高階函數?借用這張圖做個匯總:
http://hongjiang.info/scala-higher-kinded-type/
scala類型系統:24) 理解 higher-kinded-type