欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

scala中怎么實(shí)現(xiàn)隱式類型轉(zhuǎn)換

本篇文章給大家分享的是有關(guān)scala中怎么實(shí)現(xiàn)隱式類型轉(zhuǎn)換,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)主營(yíng)類烏齊網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),類烏齊h5微信小程序搭建,類烏齊網(wǎng)站營(yíng)銷推廣歡迎類烏齊等地區(qū)企業(yè)咨詢

一.自動(dòng)進(jìn)行某些數(shù)據(jù)類型的隱式轉(zhuǎn)換

String類型是不能自動(dòng)轉(zhuǎn)換為Int類型的,所以當(dāng)給一個(gè)Int類型的變量或常量賦予String類型的值時(shí)編譯器將報(bào)錯(cuò)。所以,一下語(yǔ)句是錯(cuò)誤的。

val x: Int = "100"

如果需要將一個(gè)字符串類型的整形數(shù)值賦給Int,比如使用String.toInt方法,例如:

val x: Int = "100".toInt

如果想讓字符串自動(dòng)轉(zhuǎn)換為整形,就可以使用隱式轉(zhuǎn)換??梢远x如下函數(shù)。

implicit def strToInt(str: String) = str.toInt

這時(shí)你再對(duì)Int類型的變量賦值字符串時(shí),字符串就會(huì)自動(dòng)轉(zhuǎn)換為Int。

scala> val x:Int = "00"x: Int = 100

如果你此時(shí)定義一個(gè)兩數(shù)相加的函數(shù)

def add(x: Int, y: Int) = x + y

就可以達(dá)到這種效果:

scala> add("100", 200)res1: Int = 300

隱式轉(zhuǎn)換有一定的使用規(guī)則,比較重要的有2個(gè)。

1.按照《Scala編程》這本書中所說(shuō):插入的隱式轉(zhuǎn)換必須以單一標(biāo)識(shí)符的形式處于作用域中,或與轉(zhuǎn)換的源或目標(biāo)類型關(guān)聯(lián)在一起。Scala編譯器將僅考慮處于作用域之內(nèi)的隱式轉(zhuǎn)換。

簡(jiǎn)而言之,就是在使用隱式轉(zhuǎn)換之前,需要用import把隱式轉(zhuǎn)換引用到當(dāng)前的作用域里或者就在作用域里定義隱式轉(zhuǎn)換。除了隱式轉(zhuǎn)換被引入進(jìn)當(dāng)前作用域之外,還有一種方式可以使用隱式轉(zhuǎn)換,就是編譯器會(huì)在源類型或者期望的伴生對(duì)象中尋找隱式定義。

2.無(wú)歧義規(guī)則:隱式轉(zhuǎn)換只能在無(wú)其他可用轉(zhuǎn)換的前提下才能操作。如果在同一作用域里,對(duì)同一源類型定義一個(gè)以上的隱式轉(zhuǎn)換函數(shù),如果多種隱式轉(zhuǎn)換函數(shù)都可以匹配,那么編譯器將報(bào)錯(cuò),所以在使用時(shí)請(qǐng)移除不必要的隱式定義。

二.隱式參數(shù)

柯里化函數(shù)會(huì)有多個(gè)參數(shù)列表,當(dāng)希望對(duì)某個(gè)參數(shù)列表采用默認(rèn)參數(shù)時(shí),可以使用implicit提供的隱式參數(shù)功能。做法是在需要自動(dòng)填充的參數(shù)列表最開(kāi)端加上implicit,然后在定義域內(nèi)定義需要填充的默認(rèn)參數(shù)值常量,并在常量的定義之前聲明implicit。

視界

當(dāng)有如下定義時(shí)

class Container[A <% Int] { def addIt(x: A) = 123 + x }

表示A類型必須可視為Int。簡(jiǎn)單的說(shuō),就是需要有一個(gè)轉(zhuǎn)換函數(shù),可以自動(dòng)的將A類型,轉(zhuǎn)換為Int類型,如果沒(méi)有這樣的轉(zhuǎn)換函數(shù),可以使用implicit定義。

寫一個(gè)類測(cè)試一下Scala中的隱式轉(zhuǎn)換的用法:

class Fraction(n: Int, d: Int) {// def den = d private val den = d;// def num = n 類參數(shù)定義為方法或字段都可以 private val num = n;// 定義乘法 def *(other: Fraction) = Fraction(other.num * this.num, other.den * this.den)// 重寫toString override def toString() = s"$num / $den" }//伴生對(duì)象object Fraction {// implicit隱轉(zhuǎn) 方法名無(wú)關(guān)可以隨意改,自動(dòng)調(diào)用 implicit def int2Fraction(n: Int) = Fraction(n, 1) def apply(n: Int, d: Int) = {  new Fraction(n, d) } def unapply(frac: Fraction) = if (frac.den == 0) None else Some((frac.num, frac.den))}object TestFrac extends App{// 3 隱式調(diào)用了int2Fraction方法被轉(zhuǎn)化為一個(gè)Fraction對(duì)象Fraction(3,1) val result = 3 * Fraction(4,5)// 也可以顯示調(diào)用 val result2 = Fraction.int2Fraction(5) * Fraction(3,4) println(result)// unapply val Fraction(num,den) = result println(num,den)}

以上就是scala中怎么實(shí)現(xiàn)隱式類型轉(zhuǎn)換,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標(biāo)題:scala中怎么實(shí)現(xiàn)隱式類型轉(zhuǎn)換
網(wǎng)頁(yè)鏈接:http://aaarwkj.com/article12/ggpidc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化定制開(kāi)發(fā)、網(wǎng)站建設(shè)、云服務(wù)器、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
淫色网av人妻中文字幕| 91午夜福利视频鉴赏| 小明久久国内精品自线| 欧美成人精品欧美一级黄片| 99精品亚洲一区二区| 黄色av手机在线观看| 国产国产精品人在线观看| 欧美日韩综合人妻丝袜偷拍| 欧美精品黑人三级精品| 亚洲福利一区福利三区| 极品美女粉嫩啪啪高潮| 中文字幕四虎在线观看| 国产av白浆一区二区色爽黄| 午夜剧场福利在线观看| 水蜜桃成人在线视频免费观看| 国产一区丝袜高跟在线| 91麻豆成人国产在线观看| 一区二区三区不卡中文字幕| 日韩av大片一区二区三区| 国产午夜亚洲精品福利| 日本岛国大片在线视频| 国产精品熟女在线视频| 免费在线观看污污污网站| 午夜射精视频在线观看| 欧美一区二区三区午夜| 日本在线高清精品人妻| 欧美精品亚洲精品日韩| 欧美日韩福利一区二区三区| 日韩精品亚洲专区在线观看| 国产区青青操自拍视频| 国产99久久精品免费看| 蜜桃少妇人妻一区二区视频| 亚洲热妇热女久久精品| 欧美一区二区三区十区| 色综合色狠狠天天综合色| 久久 久久国内精品亚洲| 国产男女爱猛视频在线| 特黄特色的日本大片| 日本中文字幕黄色人妻| 色橹橹欧美午夜精品福利| 91九色在线精品一区|