您好,登錄后才能下訂單哦!
一、Scala隱式轉換使用場景
1、用于從一種類型到另一種類型的轉換。
2、用于缺少參數方法的調用
二、Scala隱式轉換分類
1、隱式方法
implicit def intToString(x: Int) = x.toString
2、隱式類
implicit class RichFile(file: File) {
def read = Source.fromFile(file).mkString
}
new java.io.File(".").read
3、隱式對象
implicit object StringOrdering extends Ordering[String] {
override def compare(x: String, y: String): Int = x.length - y.length
}
4、隱式變量
implicit val test = 5
5、隱式參數
implicit val test = 5
findAnInt
def findAnInt(implicit x: Int) = x
三、隱式轉換規則
1、如果表達式不符合編譯器要求的類型,編譯器會查找能使之符合類型要求的隱式轉換
2、如果T類型中沒有成員e,但是我們還是想通過T.e來訪問e,那么編譯器會查找能應用到T類型并且返回類型包含成員e的隱式轉換
四、隱式查找的規則
1、隱式實體在查找發生的地點可見(可以通過import將隱式實體綁定到當前作用域)
2、如果按照第一條規則沒有找到隱式實體的話,那么會在源類型和目標的類型(T)的隱式作用域里包含的所有隱式實體中查找
2.1、類型T以及它的父類的伴生對象
2.2、參數化類型T的所有的類型參數的伴生類
2.3、類型T或者類型T的類型參數所在的對象(object)
2.4、包對象
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。