隱式轉換函式: 所謂隱式轉換函式指的是implicit關鍵字修飾的且只有乙個引數的函式,其作用是 1.隱式轉換增強現有型別,2. 隱式轉換做引數型別轉換
1. 例如:
inplicit def int2string(n:int):string = (n.tostring)
上案例:我們把fruit物件轉換成了monkey物件
//scala的隱式轉換
//水果
class fruit(name:string)
}//猴子monkey
class monkey(f:fruit)
}object implicitdemo
def main(args: array[string])
}
2. 隱式轉換做引數型別轉換
// 案例:特殊售票視窗(只接受特殊人群,比如學生、老人等)
class specialperson(val name : string)
class student(val name : string)
class older(val name : string)
//隱式轉換函式,將student和older轉變成specialperson型別
implicit def object2specialperson(obj : object) : specialperson =
case b : older =>
case _ => nil
}}
def buyspecialticket(sp : specialperson)
buyspecialticket(new student("student"))
執行結果:
隱式引數:使用implicit申明的函式引數叫做隱式引數。我們也可以使用隱式引數實現隱式的轉換
//scala的隱式引數
def testparam(implicit name:string) =
//定義乙個隱式引數
implicit val name:string="這是乙個隱式值"
//問題:在呼叫的方法的時候,可以不用傳遞引數嗎?
testparam
//使用隱式引數實現隱式的轉換
//定義乙個方法,找到兩個值中較小的那個值
// 100 23 ---> 23
// hello abc ---> abc
def smaller[t](a:t,b:t)(implicit order:t => ordered[t]) = if(a < b) a else b
smaller(100,23)
smaller("hello","abc")
所謂隱式類: 就是對類增加implicit 限定的類,其作用主要是對類的功能加強!
/**
* scala的隱式類
*/object implicitclass
def main(args: array[string])
/*隱式類執行的過程:
1. 當1.add(2),scala的編譯器不會立即報錯;在當前域當中查詢,有沒有implicit修飾的,同時可以將int作為引數的構造器,
並且具有add方法的類。通過查詢,找到了calc
2. 利用隱式類calc來執行add方法
*/}
scala 隱式轉換函式 隱式轉換引數
目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...
scala隱式轉換函式
定義 1.只要在程式可見的範圍內定義了隱式轉換函式,就會被scala自動呼叫 2.隱式轉換函式的名字可以任意,建議名為 2yyy 3.以implicit開頭,而且最好定義函式返回型別 eg object test else if obj.getclass classof older else nul...
scala隱式轉換函式及隱式值
隱式函式基本介紹 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式,這種函式將會自動呼叫,將值從一種類 型轉換到另一種型別,使用隱式函式可以優雅的解決資料型別轉換 隱式轉換的注意事項和細節 1 隱式轉換函式的函式名可以是任意的,隱式轉換與函式名稱無關,只與函式 簽名 函式引數型別和 返...