定義:
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...