scala隱式轉換函式

2021-08-07 08:07:53 字數 1369 閱讀 4320

定義:

1.只要在程式可見的範圍內定義了隱式轉換函式,就會被scala自動呼叫

2.隱式轉換函式的名字可以任意,建議名為」***2yyy」

3.以implicit開頭,而且最好定義函式返回型別

eg:

object

test

else

if (obj.getclass == classof[older])

else

null

}var ticketnumber = 0

def buyspecialticket(p: specialperson) =

val a=new student("aaa")

println(buyspecialticket(a))

val b=new older("bbb")

println(buyspecialticket(b))

}}

** 隱式轉換的強大之處就是可以在不知不覺中增強現有類的功能

** 如果隱式轉換函式不在可見範圍內,那就必須使用import來匯入,如:import***._

class

man(val name: string)

class

superman

(val name: string)

implicit def man2superman(man: man): superman = new superman(man.name)

val leo = new man("leo")

leo.emitlaser

** scala什麼時候會進行隱式轉換?

1 呼叫某個函式,但傳入引數的型別與函式定義的引數型別不匹配(函式)

2 呼叫某個方法,雖然該類有這個方法,但給方法傳入的引數型別,與方法定義的引數型別不匹配(方法)

3 使用某個物件,呼叫某個方法,但這個方法並不存在於該類時

—-隱式引數———————

** 在函式或方法中,用implicit來修飾的引數即為隱式引數

** scala會嘗試找到乙個對應型別的、用implicit修飾的物件,即隱式值,並將其作為引數注入

** scala會在兩個範圍內查詢:乙個是當前作用域內可見的val或var定義的隱式變數

** 另乙個是隱式引數型別的伴生物件內的隱式值

class

signpen

implicit val pen = new signpen

def signforexam(name: string) (implicit signpen: signpen)

signforexam("aaa")

scala 隱式轉換函式 隱式轉換引數

目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...

scala隱式轉換函式及隱式值

隱式函式基本介紹 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式,這種函式將會自動呼叫,將值從一種類 型轉換到另一種型別,使用隱式函式可以優雅的解決資料型別轉換 隱式轉換的注意事項和細節 1 隱式轉換函式的函式名可以是任意的,隱式轉換與函式名稱無關,只與函式 簽名 函式引數型別和 返...

scala 隱式轉換

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