Scala 隱式轉換

2021-10-24 02:37:05 字數 1630 閱讀 8155

目錄

一、隱式函式

二、 隱式引數

三、隱式類

四、隱式解析機制

當編譯器第一次編譯失敗的時候,會在當前的環境中查詢能讓**編譯通過的方法,用於將型別進行轉換,實現二次編譯

1)說明

隱式轉換可以在不需改任何**的情況下,擴充套件某個類的功能。

2)案例實操

需求:通過隱式轉化為

int型別增加方法。

class myrichint(val self: int) 

def mymin(i: int): int =

}object testimplicitfunction

def main(args: array[string]): unit =

}

普通方法或者函式中的引數可以通過implicit關鍵字宣告為隱式引數,呼叫該方法時,就可以傳入該引數,編譯器會在相應的作用域尋找符合條件的隱式值。

1)說明

(1)同乙個作用域中,相同型別的隱式值只能有乙個

(2)編譯器按照隱式引數的型別去尋找對應型別的隱式值,與隱式值的名稱無關。

(3)隱式引數優先於預設引數

2)案例實操

object testimplicitparameter 

def main(args: array[string]): unit =

}

在scala2.10後提供了隱式類,可以使用implicit宣告類,隱式類的非常強大,同樣可以擴充套件類的功能,在集合中隱式類會發揮重要的作用。

1)隱式類說明

(1)其所帶的構造引數有且只能有乙個

(2)隱式類必須被定義在「類」或「伴生物件」或「包物件」裡,即隱式類不能是頂級的

2)案例實操

object testimplicitclass 

def mymin(i: int) =

}def main(args: array[string]): unit =

}

1)說明

(1)首先會在當前**作用域下查詢隱式實體(隱式方法、隱式類、隱式物件)。(一般是這種情況)

(2)如果第一條規則查詢隱式實體失敗,會繼續在隱式引數的型別的作用域裡查詢。型別的作用域是指與該型別相關聯的全部伴生物件以及該型別所在包的包物件

2)案例實操

package com.chapter10

import com.chapter10.scala05_transform4.teacher

//(2)如果第一條規則查詢隱式實體失敗,會繼續在隱式引數的型別的作用域裡查詢。型別的作用域是指與該型別相關聯的全部伴生模組,

object testtransform extends persontrait

class teacher

}}trait persontrait

object persontrait

}}

scala 隱式轉換

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

scala 隱式轉換

隱式轉換就是 當scala編譯器進行型別匹配時,如果找不到合適的候選,那麼隱式轉化提供了另外一種途徑來告訴編譯器如何將當前的型別轉換成預期型別。使用方式 將方法或變數標記為implicit 將方法的引數列表標記為implicit 將類標記為implicit 宣告乙個帶有implicit修飾過引數的方...

scala隱式轉換

目錄 隱式轉換的概念 隱式轉換的使用 隱式轉換做引數型別轉換 隱式轉換增強現有型別 隱式引數 利用隱式引數進行隱式轉換 再議context bounds 隱式轉換函式 implicit conversion function 是以implicit關鍵字宣告的帶有單個引數的函式,這樣的函式將被自動應用...