scala中隱式轉換之總結

2021-09-09 04:33:10 字數 664 閱讀 9599

1、隱式轉換的時機:

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

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

2、隱式解析機制

即編譯器是如何查詢到缺失資訊的,解析具有以下兩種規則:

1.首先會在當前**作用域下查詢隱式實體(隱式方法  隱式類 隱式物件)

2.如果第一條規則查詢隱式實體失敗,會繼續在隱式引數的型別的作用域裡查詢

(1)如果t被定義為t with a with b with c,那麼a,b,c都是t的部分,在t的隱式解析過程中,它們的伴生物件都會被搜尋

(2)如果t是引數化型別,那麼型別引數和與型別引數相關聯的部分都算作t的部分,比如list[string]的隱式搜尋會搜尋list的

伴生物件和string的伴生物件

(3) 如果t是乙個單例型別p.t,即t是屬於某個p物件內,那麼這個p物件也會被搜尋

(4) 如果t是個型別注入s#t,那麼s和t都會被搜尋

3、隱式轉換的前提:

1.不存在二義性

2.隱式操作不能巢狀使用(如 convert1(covert2(x)))+y

3.**能夠在不使用隱式轉換的前提下能編譯通過,就不會進行隱式轉換

Scala之隱式轉換

隱式轉換函式是以implicit關鍵字宣告帶有單個引數的函式。這種函式將會自動應用 package top.mgy object implicitdome def main args array string unit 上面的將double轉為int的函式f1將會自動應用的作用域中所有需要將doub...

Scala隱式轉換之隱式引數 1

函式或者方法可以帶有乙個標記為implicit的引數。在這種情況下,編譯器將會查詢預設值,提供給該函式或者方法。示例 case class d left string,right string def quote title string implicit d d d.left title d.ri...

scala 隱式轉換

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