Scala 高階特性之 隱式轉換

2021-10-03 12:39:24 字數 948 閱讀 6682

引用 scala 官方的話, 只有兩種情況會發生隱式轉換:

當表示式型別 s 與期盼的型別 t 不相符時.

當對乙個物件 b 呼叫 b.methoda() 時, methoda 並不存在於 b 物件所屬的類或父類中時.

下面用**說明什麼是隱式轉換:

class

specialperson

(val name: string)

}class

student

(val name: string)

// 注意此處接收的引數型別

def buyticket

(specialperson: specialperson)

: unit =

// 注意第二個隱式引數

def showname()

(implicit delimiter: delimiter)

: unit =

$name$")}

}case

class

delimiter

(left: string, right: string)

下面看看呼叫:
object demo 

}

執行結果:
呼叫了隱試轉換方法

djh-- implicit

呼叫了隱試轉換方法

展示特殊身份票

process finished with exit code 0

從上面的執行結果可以看到, 每使用一次隱式轉換,就會呼叫一次隱式轉換方法.

說說隱式引數, 他是指乙個以 implicit 標記的引數, scala 會自動在這個方法呼叫的作用域內搜尋該隱式引數對應型別的 val var 變數, 或者在隱式引數型別的伴生物件中搜尋隱式變數. 當然,也可以手動傳入隱式引數.

參考: scala 的隱式轉換、隱式引數

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...