Scala的隱式轉換

2021-10-03 16:46:51 字數 956 閱讀 7539

在整個作用域,隱式轉換的名字要唯一

隱式有隱式值/隱式引數,隱式函式,隱式類,隱式物件

關鍵字implicit

轉換時機

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

當呼叫的類裡的方法與類中不一致時

也就是說編譯器在隱式轉換時是在查詢缺失資訊,這個缺失資訊就在所在作用域裡找。

1個匹配

object demo9 extends

im}

這裡的im方法會預設傳入str=「lalala~~~~」

多個匹配

object demo9 extends

im}

這裡的im方法會預設傳入s=「lalala~~~~」,a=2

隱式函式是將一種型別轉換為另一種型別

object demo

def f2

(a:int)

: unit =f2(

"qwe"

)}

這裡f2傳的string=「qwe」也是對的。原因就是隱式轉換了,自動呼叫了f1返回了int型別

package f2

}classc2}

object demo03_隱式檢視 extends

}

這裡的c1具備了c2的方法,但要注意的是f1裡的a是c1型別。在呼叫方法的時候會自動匹配到f1這個隱式函式。

可以比較有用的為一些寫好的類新增方法,是對類功能增強的一種形式。

object demo

} def main

(args: array[string]

): unit =

}

scala是比較靈活的,在隱式轉換中,scala會在當前域中查詢有沒有implicit修飾的,然後會利用隱式轉換來執行方法或引數。

scala 隱式轉換

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

scala 隱式轉換

隱式轉換就是 當scala編譯器進行型別匹配時,如果找不到合適的候選,那麼隱式轉化提供了另外一種途徑來告訴編譯器如何將當前的型別轉換成預期型別。使用方式 將方法或變數標記為implicit 將方法的引數列表標記為implicit 將類標記為implicit 宣告乙個帶有implicit修飾過引數的方...

scala隱式轉換

目錄 隱式轉換的概念 隱式轉換的使用 隱式轉換做引數型別轉換 隱式轉換增強現有型別 隱式引數 利用隱式引數進行隱式轉換 再議context bounds 隱式轉換函式 implicit conversion function 是以implicit關鍵字宣告的帶有單個引數的函式,這樣的函式將被自動應用...