真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

scala的類型推斷是什么

本篇內(nèi)容主要講解“scala的類型推斷是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“scala的類型推斷是什么”吧!

創(chuàng)新互聯(lián)建站技術團隊十余年來致力于為客戶提供成都網(wǎng)站設計、成都做網(wǎng)站、品牌網(wǎng)站建設、成都全網(wǎng)營銷推廣、搜索引擎SEO優(yōu)化等服務。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術團隊,先后服務、推廣了成百上千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構單位。

Scala 編譯器通常可以推斷出表達式的類型,因此你不必顯式地聲明它。

省略類型

val businessName = "Montreux Jazz Café"

編譯器可以發(fā)現(xiàn) businessName 是 String 類型。它的工作原理和方法類似:

def squareOf(x: Int) = x * x

編譯器可以推斷出方法的返回類型為 Int,因此不需要明確地聲明返回類型。

對于遞歸方法,編譯器無法推斷出結(jié)果類型。下面這個程序就是由于這個原因而編譯失?。?/p>

def fac(n: Int) = if (n == 0) 1 else n * fac(n - 1)

當調(diào)用 多態(tài)方法 或?qū)嵗?泛型類 時,也不必明確指定類型參數(shù)。Scala 編譯器將從上下文和實際方法的類型/構造函數(shù)參數(shù)的類型推斷出缺失的類型參數(shù)。

看下面兩個例子:

case class MyPair[A, B](x: A, y: B)val p = MyPair(1, "scala")
def id[T](x: T) = xval q = id(1)

編譯器使用傳給 MyPair 參數(shù)的類型來推斷出 AB 的類型。對于 x 的類型同樣如此。

參數(shù)

編譯器從不推斷方法形式參數(shù)的類型。但是,在某些情況下,當函數(shù)作為參數(shù)傳遞時,編譯器可以推斷出匿名函數(shù)形式參數(shù)的類型。

Seq(1, 3, 4).map(x => x * 2)

方法 map 的形式參數(shù)是 f: A => B。因為我們把整數(shù)放在 Seq 中,編譯器知道 AInt 類型 (即 x 是一個整數(shù))。因此,編譯器可以從 x * 2 推斷出 BInt 類型。

何時 不要 依賴類型推斷

通常認為,公開可訪問的 API 成員應該具有顯示類型聲明以增加可讀性。 因此,我們建議你將代碼中向用戶公開的任何 API 明確指定類型。

此外,類型推斷有時會推斷出太具體的類型。 假設我們這么寫:

var obj = null

我們就不能進行重新賦值:

obj = new AnyRef

它不能編譯,因為 obj 推斷出的類型是 Null。由于該類型的唯一值是 null,因此無法分配其他的值。

到此,相信大家對“scala的類型推斷是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!


網(wǎng)站題目:scala的類型推斷是什么
分享鏈接:http://weahome.cn/article/ggdjpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部