Scala隱式轉換

2021-09-29 04:57:09 字數 1519 閱讀 8254

隱式轉換

隱式轉換增強現有型別

import scala.io.source

//richfile相當於file增強類,需要將被增強的類作為引數傳入增強類構造器中

class richfile(filepath :string)

}//implicit定義乙個隱式轉換函式把被增強型別轉換成增強的型別

object mypredef

object helloimplicitconversions

}

隱式引數
object param

object mypreder

object implictparameters

}

隱式引數隱式轉換
object implicitconversionswithimplicitparameters 

println(everythingcompare(4, 3))

println(everythingcompare("shangtj", "lihechi"))

}}

隱式類(少)

有時候進行**重構,要增強他的某項功能同時又不想做太大的改動

import scala.io.source

object context_helper

implicit class opadd(x:int)

}object implicitsclass

}

隱式物件
abstract class template[t]

abstract class subtemplate[t] extends template[t]

object implicitsobject

implicit object intadd extends subtemplate[int]

//im是隱式物件

def sum[t](list :list[t])(implicit im:subtemplate[t]):t =

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

}

也可以用來做引數型別轉換

implicit def object2specialperson(obj : object) : specialperson = 

case b : older =>

case _ => nil

}}

上下文界定中的隱式引數

在每次上下文執行的例項物件中將具體的值注入到隱式引數中,而且注入的過程是自動的

//[t: ordering]:說明存在乙個隱式型別ordering[t]

class pair_implicits[t: ordering](val a: t, val b: t)

}object contextboundsinternals

}

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關鍵字宣告的帶有單個引數的函式,這樣的函式將被自動應用...