天天看點

scala implicit 隐式轉換總結1.形參中的隐式轉換2.函數前加implicit

1.形參中的隐式轉換

例:def sum(c:int)(implicit d:int)=c+d

implicit val default=6

val a=sum(8)

結果a=14

implicit 參數會将implicit變量自動添加到參數中充當參數值使用,如果沒有implicit變量或者變量數量多于一個,程式将報錯

scala implicit 隐式轉換總結1.形參中的隐式轉換2.函數前加implicit

2.函數前加implicit

作用大概和變量前加implicit作用相同,變量前加implicit,形參中有需要用到implicit變量的地方會自動填寫合适的implicit變量,而implicit函數存在時,如果函數中的形參傳遞不符合形參要求,而剛好有implicit函數的傳回值能夠滿足該需求,那麼在scala中将預設優先調用implicit函數,然後再調用我們顯示調用的函數。

例子:

scala implicit 隐式轉換總結1.形參中的隐式轉換2.函數前加implicit

而在沒有implicit函數的情況下,程式是會報錯的:

scala implicit 隐式轉換總結1.形參中的隐式轉換2.函數前加implicit