一、隱式轉換函數
二、使用隱式轉換增強現有類型spa
三、隱式轉換函數的做用域與導入scala
四、隱式轉換髮生時機對象
五、隱式參數blog
要實現隱式轉換,只要程序可見的範圍內定義隱式轉換函數便可。Scala會自動使用隱式轉換函數。隱式轉換函數與普通函數惟一的語法區別是以implicit開頭,並且必定要定義函數返回類型。特殊售票窗口:ci
隱式轉換能夠在不知不覺中增強現有類型的功能,就是說,能夠爲某個類定義一個增強版的類,並定義互相之間的隱式轉換,從而讓源類在使用增強版的方法時,由scala自動進行隱式轉換爲增強類,而後調用該方法。超人變身:作用域
scala默認使用兩種隱式轉換,一種是源類型,着這目標類型的伴生對象內的隱式轉換函數;一種是當前程序做用域內的能夠用惟一標識符表示的隱式轉換函數。it
若是隱式轉換函數不在上述兩種狀況下的話,必須手動使用import語法引入某個包下的隱式轉換函數,好比importtest._。一般建議,僅僅在須要進行隱式轉換的地方,好比某個函數或者方法內,用iimport導入隱式轉換函數,這樣能夠縮小隱式轉換函數的做用域,避免不須要的隱式轉換。io
一、調用某個函數,可是給函數傳入的參數的類型,與函數定義的接受參數類型不匹配。test
二、使用某個類型的對象,調用某個方法,而這個方法並不存在與該類型時。
三、使用某個類型的對象,調用某個方法,雖然該類型有這個方法,可是給方法傳入的參數類型,與方法定義的接受參數的類型不匹配。
隱式參數,指在函數或者方法中,定義一個用implicit修飾的參數,scala會嘗試找到一個指定類型的,用implicit修飾的對象,即隱式值,並注入參數。
scala會在兩個範圍內查找,一種是當前做用域可見的val或var定義的隱式變量,一種是隱式參數類型的伴生對象內的隱式值。