溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

第42講:Scala中泛型類、泛型函數(shù)、泛型在Spark中的廣泛應用

發(fā)布時間:2020-08-13 13:39:11 來源:網(wǎng)絡 閱讀:3398 作者:lqding1980 欄目:大數(shù)據(jù)

泛型:通俗的講,比如需要定義一個函數(shù),函數(shù)的參數(shù)可以接受任意類型。我們不可能一一列舉所有的參數(shù)類型重載(overload)函數(shù)。

那么程序引入了一個稱之為泛型的東西,這個類型可以代表任意的數(shù)據(jù)類型。

例如List,在創(chuàng)建List時,可以傳入×××、字符串、浮點數(shù)等等任意類型。那是因為List在類定義時引用了泛型。

List的定義

sealed abstract class List[+A] extends AbstractSeq[A]
                                  with LinearSeq[A]
                                  with Product
                                  with GenericTraversableTemplate[A, List]
                                  with LinearSeqOptimized[A, List[A]]
                                  with Serializable

其中A就是類型,當然A你可以寫成任意的標識符。


泛型應用在類和函數(shù)中,代碼示例如下:

package com.dt.scala.type_parameterization
//泛型類 F,S,T 是類型,后面引用該類型
class Triple[F,S,T](first: F,second: S,third: T)

object Hello_type_parameterization {
  def main(args: Array[String]): Unit = {
    //創(chuàng)建一個對象,傳入?yún)?shù)類型為 String、Int、Double
    val triple1 = new Triple("Spark",3,3.14) 
    // 可見,定義時使用泛型,在調(diào)用時可以根據(jù)自己的需要傳入任何類型。
    //也可以用如下方式創(chuàng)建對象
    val triple2 = new Triple[String,String,String]("Spark","Scala","Kafka")
    //new 的時候,指定類型。那么傳入的參數(shù),必須是指定的類型
    
    // 泛型函數(shù)
    // 定義一個函數(shù),可以獲取各類List的中間位置的值
    def getData[T](l: List[T])={
      l.take(l.length/2)
    }
    println(getData(List("a","b","c")))
    println(getData(List(1,2,3,4,5,6)))
    
  }
}


向AI問一下細節(jié)
推薦閱讀:
  1. Scala的泛型
  2. Scala泛型

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI