1五、Scala隱式轉換和隱式參數

一、隱式轉換函數

二、使用隱式轉換增強現有類型spa

三、隱式轉換函數的做用域與導入scala

四、隱式轉換髮生時機對象

五、隱式參數blog

一、隱式轉換

  要實現隱式轉換,只要程序可見的範圍內定義隱式轉換函數便可。Scala會自動使用隱式轉換函數。隱式轉換函數與普通函數惟一的語法區別是以implicit開頭,並且必定要定義函數返回類型。特殊售票窗口:ci

  

二、使用隱式轉換增強現有類型

  隱式轉換能夠在不知不覺中增強現有類型的功能,就是說,能夠爲某個類定義一個增強版的類,並定義互相之間的隱式轉換,從而讓源類在使用增強版的方法時,由scala自動進行隱式轉換爲增強類,而後調用該方法。超人變身:作用域

  

三、隱式轉換函數的做用域與導入

  scala默認使用兩種隱式轉換,一種是源類型,着這目標類型的伴生對象內的隱式轉換函數;一種是當前程序做用域內的能夠用惟一標識符表示的隱式轉換函數。it

  若是隱式轉換函數不在上述兩種狀況下的話,必須手動使用import語法引入某個包下的隱式轉換函數,好比importtest._。一般建議,僅僅在須要進行隱式轉換的地方,好比某個函數或者方法內,用iimport導入隱式轉換函數,這樣能夠縮小隱式轉換函數的做用域,避免不須要的隱式轉換。io

四、隱式轉換髮生時機

  一、調用某個函數,可是給函數傳入的參數的類型,與函數定義的接受參數類型不匹配。test

  二、使用某個類型的對象,調用某個方法,而這個方法並不存在與該類型時。

  三、使用某個類型的對象,調用某個方法,雖然該類型有這個方法,可是給方法傳入的參數類型,與方法定義的接受參數的類型不匹配。

  

五、隱式參數

  隱式參數,指在函數或者方法中,定義一個用implicit修飾的參數,scala會嘗試找到一個指定類型的,用implicit修飾的對象,即隱式值,並注入參數。

  scala會在兩個範圍內查找,一種是當前做用域可見的val或var定義的隱式變量,一種是隱式參數類型的伴生對象內的隱式值。

  

相關文章
相關標籤/搜索