Scala 隱式引數 隱式轉換 多型方法

2021-08-30 13:23:06 字數 943 閱讀 4141

方法可以通過在引數列表開始處使用implicit關鍵字標識,表示方法的隱式引數列表。如果隱式引數列表的引數沒有被正常傳入,scala將會檢視其是否能夠獲取對應型別的隱含值,如果可以,將其自動傳入。

scala的搜尋流程如下:

class a(name:string)

# 標識隱式成員

implicit val aaa = new a("aaaa")

# 使用隱式引數定義方法

def kkk(iii:string)(implicit a:a):unit =

# 呼叫使用隱式引數的方法

kkk("kkkkkkkk")

從型別s到型別t的隱式轉換可以由具有函式型別s=>t的隱式值定義,或由可轉化為此型別值的隱式方法定義。

隱式轉化應用於兩種情況:

在第一種情況下,搜尋適合e,並且結果型別符合t的轉換c。在第二種情況下,搜尋適合e,並且結果包含名為m的成員的轉化c。

由於不加選擇地使用隱式轉換可能會有陷阱,所以當編譯到隱式轉化時,編譯器會發出警告。

可以通過以下方法之一關閉警告:

編譯器應用轉化時不會發出警告。

scala中的方法可以按照值與型別進行引數化。語法類似於泛型類。型別引數放在方括號中,而值引數放在括號中。

# 定義方法(根據引數的值與型別可以表現出多型)

def listofduplicates[a](x: a, length: int): list[a] =

# 複製整數

println(listofduplicates[int](3, 4))

# 複製字串

println(listofduplicates("la", 8))

ps:12::pp表示將12放入列表pp的左側。

ps:型別引數可以省略,編譯器可以通過上下文或者引數的型別將其推導出來。

Scala隱式轉換與隱式引數

所謂隱式轉換,是指以implicit關鍵字宣告的帶有單個引數的方法。它是自動被呼叫的,自動將某種型別轉換為另外一種型別。隱式轉換的使用步驟 在object中定義隱式轉換方法 使用implicit 在需要用到隱式轉換的地方,引入隱式轉換 使用import 自動呼叫隱式轉化後的方法 示例 使用隱式轉換,...

Scala 隱式轉換和隱式引數

紙上得來終覺淺,絕知此事要躬行!隱式函式基本介紹 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式。這種函式將會自動應用,將值從一種型別轉換為另一種型別 隱式函式快速入門 使用隱式函式可以優雅的解決資料型別轉換,案例入門.implicit def f1 d double int dou...

scala 隱式轉換函式 隱式轉換引數

目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...