scala隱式引數 隱式函式 隱式類詳解

2021-10-25 02:45:25 字數 2438 閱讀 3377

隱式函式

隱式類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...