最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

scala 隱式轉(zhuǎn)換與隱式參數(shù)的使用方法

 更新時間:2019年11月06日 09:44:53   作者:小雞  
這篇文章主要介紹了scala 隱式轉(zhuǎn)換與隱式參數(shù)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

隱式轉(zhuǎn)換和隱式參數(shù)

Scala總共有三個地方會使用隱式定義:

  • 轉(zhuǎn)換到一個預(yù)期的類型
  • 對某個(成員)選擇接收端(字段、方法調(diào)用等)的轉(zhuǎn)換
  • 隱式參數(shù)

隱式規(guī)則

  • 標(biāo)記規(guī)則:只有標(biāo)記為implicit的定義才可用。可標(biāo)記任何變量、函數(shù)、對象
  • 作用域規(guī)則:被插入的隱式轉(zhuǎn)換必須是當(dāng)前作用域的單個標(biāo)識符,或者跟隱式轉(zhuǎn)換的源類型或目標(biāo)類型有關(guān)聯(lián)
  • 每次一個規(guī)則:每次只能有一個隱式定義被插入
  • 比如編譯器絕不會將x+y重寫為convert2(convert1(x))+y
  • 顯示優(yōu)先規(guī)則:只要代碼按編寫的樣子能通過類型檢查,就不嘗試隱式定義

隱式轉(zhuǎn)到到一個預(yù)期的類型

寫過HBase的時候,都知道要寫大量的Bytes.toBytes()吧,那么使用隱式轉(zhuǎn)換吧。

object HBasePref {

 implicit def Str2Bytes(value: Any): Array[Byte] = value match {

  case str: String => Bytes.toBytes(str)
  case long: Long => Bytes.toBytes(long)
  case double:Double => Bytes.toBytes(double)
 }

 implicit def str2HBaseTableName(str: String): TableName = TableName.valueOf(str)
}

與新類型互相操作

你期望能夠運行1 + new Rational(1,2)這個代碼,但int類型顯然沒有這個方法。用隱式轉(zhuǎn)換吧

implicit def intToRational(x:Int) = new Rational(1,1)

模擬新的語法

還記得Map初始化的->標(biāo)識符嗎?這么騷的操作也是隱式轉(zhuǎn)換干的

隱式類

如果你經(jīng)常要構(gòu)造某個類,那么隱式的騷操作就可以這么干。

case class Rectangle(width,height)

implicit class RectangleMaker(width:Int) {
  def x(height:Int) = Rectangle(width,height)
}

val myRectangle = 3 x 4

隱式參數(shù)

class PreferredPromt(val preference:String)

object JoesPrefs {
  implicit val promt = new PreferredPrompt("Yes master>")}

object Greeter {
  def greet(name:String)(implicit prompt:PreferredPromt) = {
    println("Welcome," + name)
    println(prompt.preference)
  }
}

import JoesPrefs._

Greeter.greet("ljk")

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

昔阳县| 庆阳市| 岱山县| 苗栗县| 和顺县| 聂荣县| 高雄县| 邵阳市| 天全县| 太湖县| 永川市| 荃湾区| 教育| 张家港市| 交城县| 明水县| 古蔺县| 翼城县| 山阳县| 林芝县| 新龙县| 玉门市| 石首市| 儋州市| 内乡县| 大足县| 揭阳市| 太康县| 平乡县| 石河子市| 会宁县| 道真| 论坛| 嘉黎县| 长岛县| 陵川县| 萨嘎县| 双流县| 乌鲁木齐市| 双鸭山市| 噶尔县|