泛型類 [t]
def main(args: array[string]): unit =
// 泛型類
class student[t,s](info1: t, info2: s)
泛型函式 [t]def fun[t](field: t): unit =
def main(args: array[string]): unit =
// 指定泛型上限
def up[t <: c2 t unit="
// 指定泛型下限
def down[t >: c2](field: t): unit =
class c1 {}
class c2 extends c1
class c3 extends c2
class c4
// 檢視界定,希望跨越類繼承層次結構時,可以使用檢視界定來實現的
def view[t
// 泛型檢視界定
// int隱式轉換成richint,richint是comparable[int]的子類
協變
class c1 {}
class c2 extends c1
// 協變, 子類可以賦值給父型別
val child = new c5[c2](new c2)
val parent: c5[c1] = child
// 協變泛型
class c5[+t](field: t) {}
逆變
class c1 {}
class c2 extends c1
// 逆變泛型
class c6[-t](field: t) {}
// 逆變, 父類可以賦值給子類
val parent1 = new c6[c1](new c1)
val child1: c6[c2] = parent1
// 定義double型別 隱式轉換為 int型別
implicit def doubletoint(d: double) = d.toint
val i: int = 3.14
println(s"i = $i")
i = 3
說明: implicit def 方法名(變數名: 轉換的型別) = 返回的轉換結果
// 調入隱式轉換
import spark.implicits._
隱式轉換發生的時機
需要的引數的型別與實際型別不一致時
def fun(x: int) = {}
fun(3.14)
呼叫物件不存在的方法時
class c1
}val c = new c1()
c.read()
隱式引數
def main(args: array[string]): unit =
def func(info: string)(implicit c1: c1): unit =
class c1
}
fun info = log!
參考: 隱式轉換和隱式引數
1 隱式轉換 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式。這種函式將會自動應用,將值從一種型別轉換為另一種型別 object scala01 implicit def f1 d double int double 是輸入型別,int 是轉換後的型別 隱式函式的底層工作原理 def...
隱式轉換和
boolean true true false true true true 本來以為理所當然應該這樣的問題,原來好複雜。ecmascript中相等操作符 這種操作符會先轉換運算元 隱式轉換 然後再比較它們的相等性。基本轉換規則 如果有乙個運算元是布林值,則在比較相等性之前先將其轉換為數值 fals...
八 隱式轉換和隱式引數
目錄 一 隱式轉換 1 隱式函式入門 2 隱式轉換的注意事項和細節 3 隱式轉換豐富類庫功能 二 隱式值 三 隱式類 四 隱式的轉換時機 五 隱式解析機制 六 隱式轉換的前提 1 隱式函式基本介紹 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式。這種函式將會自動應用,將值從一種型別轉...