當編譯器第一次編譯失敗的時候,會在當前的環境中查詢能讓**編譯通過的方法,用於將型別進行轉換,實現二次編譯
普通方法或者函式中的引數可以通過implicit關鍵字宣告為隱式引數,呼叫該方法時,就可以傳入該引數,編譯器會在相應的作用域尋找符合條件的隱式值。
案例實操
def fun(a:int,b:int)(implicit c:int):int=
#第一種,直接傳參
println(fun(10,10)(20)) //40
#第二種,使用隱式引數
implicit var x:int = 10 // 定義隱式引數
println(fun(10,10) //30
#第三種,使用預設值
def fun(a:int,b:int)(implicit c:int=5):int=
println(fun(10,10) //25
println(fun(10,10)()) //25 括號內不加值,使用預設值
#優先順序:直接傳參》隱式函式》預設值
2)案例實操
//需求:通過隱式轉化為int型別增加方法。
implicit def doubletoint(value:double):int = value.toint
implicit def stringtoint(value:string):int = integer.parseint(value)
val num1:int=3.5 //3
val num2:int="1" //1
案例實操
class demo2
implicit class demo2implicit(demo2:demo2)
def bb(num:int):string=
def add(num1:int,num2:int):int=
}implicit class demo2implicit2(demo2:demo2)
}object demo2
}
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關鍵字宣告的帶有單個引數的函式,這樣的函式將被自動應用...