Scala 基礎7 隱式轉換

2021-09-09 06:30:06 字數 923 閱讀 5216

scala編譯器在編譯的時候如果發現型別不匹配,那麼就會使用隱式轉換來嘗試將當前型別轉換為預期的型別

在變數、方法或者類的前邊用implicit修飾,就表示這是乙個隱式轉換規則。

需要注意的是,隱式轉換是按照規則轉換的,也就是說和名字無關。

編譯器在同乙個地方只會新增一次隱式操作,不會在新增乙個隱式操作之後在此基礎上再次新增隱式操作

那麼什麼時候會觸發隱式轉換呢? 

1.呼叫某個函式,但是傳入的引數型別與函式的引數型別不匹配

2.使用某個類的時候,呼叫該類沒有的方法

3.使用某個類,雖然類中存在這個方法,但是傳入的引數與方法引數不匹配

示例1:呼叫函式時型別不匹配

class specialperson(val name:string)

class student(val name:string)

class elder(val name:string)

object testimplicit else if (other.getclass == classof[elder])else

}def buytickets(sp:specialperson) = needs to buy special tickets")

}def main(args: array[string]): unit =

}

示例2:引數不通過顯示傳入

class flower")

}}object implicitflower

object testimplicit

def sendtogf(name:string)(implicit f:flower) =

def main(args: array[string]): unit =

}

scala基礎之隱式轉換

一 隱式轉換 隱式轉換函式,也被稱作隱式檢視,它是可以把一種型別轉換成另外一種型別,進而可以使用另外一種型別的屬性和方法,從而滿足表示式的要求 語法格式 implicit def 函式名 引數名 引數型別 返回型別 作用 如果隱式作用域裡存在這個定義,它會隱式地把原始型別的值轉化為增強的型別的值 在...

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修飾過引數的方...