隱式函式
隱式類1、定義乙個普通變數,使用 implicit 關鍵字修飾,定義乙個函式呼叫這個變數當引數時,此時這個引數就被稱為隱式引數
2、隱式引數的作用:減少提供函式引數的數量,讓某些引數擁有隱藏的值(隱式變數)
def main(args: array[
string])
:unit
=def fun2(a:
int,b:
int)
(c:int):
int=
def fun3(a:
int,b:
int)
(implicit c:
int=
5,str:
string):
int=
//優先順序:傳參 > 隱式引數 > 預設
println(
"fun結果:"
+fun(10,
10))//30 呼叫隱式引數10 //25 預設賦值5
println(
"fun結果:"
+fun(10,
10)(20
))//40 傳參20
println(
"fun2結果:"
+fun2(10,
10)(20
))println(
"fun3結果:"
+fun3(10,
10)) println(
"fun3結果:"
注:1、隱式函式也稱隱式轉換,使用implicit修飾的函式
2、作用:可以通過乙個隱式函式將一種型別轉變為另一種型別
3、隱式轉換有兩種應用場景:
在scala中定義乙個隱式函式,函式體是將傳入的 double 型別使用 toint 方法轉為 int 型別
def main(args: array[
string])
:unit
=//定義隱式函式
val x:
int=
3.5//寫的時候scala就呼叫了隱式函式 doubletoint 進行型別轉化
常用的型別轉換:
implicit
def doubletostring (obj:
double):
string
=obj.tostring
implicit
def inttostring(obj:
int)
:string
=obj.tostring
implicit
def stringtoint(obj:
string):
int=integer.parseint(obj)
定義乙個隱式函式,使 「true=1,false=0」 ,此時便可提供乙個隱式函式,使得int+boolean成立
注: 隱式轉換的發生時機
1、隱式類指的是用implicit關鍵字修飾的類。
2、在對應的作用域內,帶有這個關鍵字的類的主建構函式可用於隱式轉換。
參考部落格:
Scala的隱式引數 隱式值 隱式物件
trait calc t 使用隱式值轉換到隱式引數 class multiplywithint extends calc int class multiplywithstring extends calc string 定義隱式值 implicit val i new multiplywithint...
scala 隱式轉換函式 隱式轉換引數
目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...
Scala中的隱式轉換函式 隱式引數和隱式類
隱式轉換函式 所謂隱式轉換函式指的是implicit關鍵字修飾的且只有乙個引數的函式,其作用是 1.隱式轉換增強現有型別,2.隱式轉換做引數型別轉換 1.例如 inplicit def int2string n int string n.tostring 上案例 我們把fruit物件轉換成了monk...