Scala隱式轉換與隱式引數

2021-09-27 09:30:52 字數 1266 閱讀 4742

所謂隱式轉換,是指以implicit關鍵字宣告的帶有單個引數的方法。它是自動被呼叫的,自動將某種型別轉換為另外一種型別。

隱式轉換的使用步驟:

在object中定義隱式轉換方法(使用implicit)

在需要用到隱式轉換的地方,引入隱式轉換(使用import)

自動呼叫隱式轉化後的方法

示例:使用隱式轉換,讓file具備有reada

class richfile(val f:file) 

object mypredef

object implicitconvertdemo

}

前面,我們手動使用了import來匯入隱式轉換。是否可以不手動import呢?

在scala中,如果在當前作用域中有隱式轉換方法,會自動匯入隱式轉換。

示例:將隱式轉換方法定義在main所在的object中

class richfile(val f:file) 

object implicitconvertdemo

}

什麼時候會自動執行隱式轉換呢?

當物件呼叫中不存在的方法時,編譯器會自動將物件進行隱式轉換

當方法中的引數型別與目標型別不一致時

示例:

object implicitconvertdemo 

def test1(r:richfile) = println(r.read())

}

函式或方法可以帶有乙個標記為implicit的引數列表。這種情況,編譯器會查詢預設值,提供給該方法。

定義隱式引數:

在方法後面新增乙個引數列表,引數使用implicit修飾

在object中定義implicit修飾的隱式值

呼叫方法,可以不傳入implicit修飾的引數列表,編譯器會自動查詢預設值

示例:

// 定義乙個分隔符類

case class delimiters(left:string, right:string)

object mypredef1

object implicitparamdemo

}

和隱式轉換一樣,可以使用import手動匯入隱式引數

如果在當前作用域定義了隱式值,會自動進行匯入

Scala 隱式轉換和隱式引數

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

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

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

Scala入門之隱式轉換與隱式引數

隱式轉換是一項強大的程式語言功能,它不僅能夠簡化程式設計,也能夠使程式具有很強的靈活性。隱式函式的名稱對結構沒有影響.函式可以是任何名字,只看引數與返回,也就是看能不能把傳入的引數變成需要的型別就行了。隱式轉換可以定義在目標檔案當中,即隱式轉換函式與目標 在同乙個檔案當中,也可以將隱式轉換集中放置在...