Scala之Implicit的用法

2021-08-28 03:13:01 字數 1200 閱讀 2442

class implicittomethod

object implicittomethod

object implicittest 

}

在函式中,將引數標誌出implicit,形式為:

def func(implicit x: int)

def func2(x: int)(implicit y: int)

def func3(implicit x: int, y: int)

這三種形式是有區別的,在引數中implicit只能出現一次,而在此之後,所有的引數都會變為implicit

implicit object test

implicit val x = 5

implicit var y

這種用法的作用主要是兩種用法搭配起來來達到乙個效果,隱式引數表明這個引數是可以缺少的,也就是說在呼叫的時候這個引數可以不用出現,那麼這個值由什麼填充呢? 那就是用隱式的值。

object implicittovalue 

def funimplicit2(implicit age: int, name: string): unit =

def funimplicit3(age: int)(implicit name: string): unit =

}

object implicittest 

}

implicit class myclass(x: int)
這裡的作用主要是其主建構函式可以作為隱式轉換的引數,相當於其主建構函式可以用來當做乙個implicit的function

class implicittoclass

object implicittoclass

def say(x: myname): unit =

}

object implicittest 

}

這裡的myname是乙個隱式類,其主建構函式可以用作隱式轉換,所以say需要乙個myname型別的引數,但是呼叫的時候給的是乙個int,這裡就會呼叫myname的主建構函式轉換為乙個myname的物件,然後再println其y的值

scala隱式轉換implicit

1.隱式轉換函式 隱式轉換背後實現的深層機制便是隱式轉換函式 implicit conversion method 隱式轉換函式的作用是在無須顯式呼叫的情況下,自動地將乙個型別轉換成另乙個型別。objecttest 注意 隱式轉換函式與函式的標籤有關,即與輸入輸出型別有關,與函式名稱無關。隱式函式可...

scala學習筆記 十三 implicit 詳解

implicit 可分為三種隱式引數 隱式轉換型別 隱式呼叫函式 1 隱式引數 implicit引數都是定義在方法最後,修飾implicit表示該組引數是隱式引數。乙個方法只會有乙個隱式引數列表,置於方法的最後乙個引數列表。如果方法有多個隱式引數,只需乙個implicit修飾即可 使用隱式引數的方式...

scala 隱式詳解 implicit關鍵字

掌握implicit的用法是閱讀spark原始碼的基礎,也是學習scala其它的開源框架的關鍵,implicit 可分為 當我們在定義方法時,可以把最後乙個引數列表標記為implicit,表示該組引數是隱式引數。乙個方法只會有乙個隱式引數列表,置於方法的最後乙個引數列表。如果方法有多個隱式引數,只需...