溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Scala隱式轉(zhuǎn)換的簡(jiǎn)單介紹

發(fā)布時(shí)間:2021-09-16 17:20:19 來源:億速云 閱讀:98 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“Scala隱式轉(zhuǎn)換的簡(jiǎn)單介紹”,在日常操作中,相信很多人在Scala隱式轉(zhuǎn)換的簡(jiǎn)單介紹問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Scala隱式轉(zhuǎn)換的簡(jiǎn)單介紹”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

Scala的隱式轉(zhuǎn)換,其實(shí)最核心的就是定義隱式轉(zhuǎn)換函數(shù),即implicitconversion function。定義的隱式轉(zhuǎn)換函數(shù),只要在編寫的程序內(nèi)引入,就會(huì)被Scala自動(dòng)使用。Scala會(huì)根據(jù)隱式轉(zhuǎn)換函數(shù)的簽名,在程序中使用到隱式轉(zhuǎn)換函數(shù)接收的參數(shù)類型定義的對(duì)象時(shí),會(huì)自動(dòng)將其傳入隱式轉(zhuǎn)換函數(shù),轉(zhuǎn)換為另外一種類型的對(duì)象并返回。這就是“隱式轉(zhuǎn)換”。
通常建議將隱式轉(zhuǎn)換函數(shù)的名稱命名為“one2one”的形式。
隱式轉(zhuǎn)換函數(shù)與普通函數(shù)唯一的語法區(qū)別就是,要以implicit開頭,而且最好要定義函數(shù)返回類型。

implicit  def double2Int(d:Double):Int={      d.toInt    }    val v:Int = 3.0    println(v)

##注意細(xì)節(jié)
隱式轉(zhuǎn)換函數(shù)的函數(shù)名可以是任意的,隱式轉(zhuǎn)換與函數(shù)名稱無關(guān),只與函數(shù)簽名(函數(shù)參數(shù)類型和返回值類型)有關(guān)。
隱式函數(shù)可以有多個(gè)(即:隱式函數(shù)列表),但是需要保證在當(dāng)前環(huán)境下,只有一個(gè)隱式函數(shù)能被識(shí)別

class developer {  def select(): Unit = {    println("select data")  }}class admin {  def delete(): Unit = {    println("delete data")  }}object TransformObjectApp {  def main(args: Array[String]): Unit = {    implicit def deleteData(dev: developer): admin = {      new admin    }    val d = new developer    d.select()    d.delete()  }}

##隱式值
隱式值也叫隱式變量,將某個(gè)形參變量標(biāo)記為implicit,所以編譯器會(huì)在方法省略隱式參數(shù)的情況下去搜索作用域內(nèi)的隱式值作為缺省參數(shù)

到此,關(guān)于“Scala隱式轉(zhuǎn)換的簡(jiǎn)單介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI