15 Scala隱式轉換和隱式引數

2022-07-17 05:54:09 字數 1221 閱讀 9863

1、隱式轉換

2、使用隱式轉換加強現有型別

3、隱式轉換函式的作用域與匯入

4、隱式轉換發生時機

5、隱式引數

要實現隱式轉換,只要程式可見的範圍內定義隱式轉換函式即可。scala會自動使用隱式轉換函式。隱式轉換函式與普通函式唯一的語法區別是以implicit開頭,而且一定要定義函式返回型別。特殊售票視窗:

隱式轉換可以在不知不覺中加強現有型別的功能,就是說,可以為某個類定義乙個加強版的類,並定義互相之間的隱式轉換,從而讓源類在使用加強版的方法時,由scala自動進行隱式轉換為加強類,然後呼叫該方法。超人變身:

scala預設使用兩種隱式轉換,一種是源型別,著這目標型別的伴生物件內的隱式轉換函式;一種是當前程式作用域內的可以用唯一識別符號表示的隱式轉換函式。

如果隱式轉換函式不在上述兩種情況下的話,必須手動使用import語法引入某個包下的隱式轉換函式,比如importtest._。通常建議,僅僅在需要進行隱式轉換的地方,比如某個函式或者方法內,用iimport匯入隱式轉換函式,這樣可以縮小隱式轉換函式的作用域,避免不需要的隱式轉換。

1、呼叫某個函式,但是給函式傳入的引數的型別,與函式定義的接受引數型別不匹配。

2、使用某個型別的物件,呼叫某個方法,而這個方法並不存在與該型別時。

3、使用某個型別的物件,呼叫某個方法,雖然該型別有這個方法,但是給方法傳入的引數型別,與方法定義的接受引數的型別不匹配。

隱式引數,指在函式或者方法中,定義乙個用implicit修飾的引數,scala會嘗試找到乙個指定型別的,用implicit修飾的物件,即隱式值,並注入引數。

scala會在兩個範圍內查詢,一種是當前作用域可見的val或var定義的隱式變數,一種是隱式引數型別的伴生物件內的隱式值。

Scala 隱式轉換和隱式引數

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

Scala的隱式引數和隱式轉換

隱式 implicit 是scala中最重要的內容同時也是最難懂的概念。在scala中隱式的概念主要包括三個方面的內容 1隱式引數 2隱式轉換 3隱式呼叫 首先隱式implicit 是什麼意思?在scala中implicit是在編譯器需要修復型別匹配時,可以用來自動插入的定義。比如舉個例子,我要把2...

scala 隱式轉換

defdisplay input string unit println input implicit deftypeconvertor input int string input.tostring implicit deftypeconvertor input boolean string if...