亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala的類型推斷是什么

發布時間:2021-12-08 14:56:04 來源:億速云 閱讀:171 作者:iii 欄目:大數據

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

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

省略類型

val businessName = "Montreux Jazz Café"

編譯器可以發現 businessName 是 String 類型。它的工作原理和方法類似:

def squareOf(x: Int) = x * x

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

對于遞歸方法,編譯器無法推斷出結果類型。下面這個程序就是由于這個原因而編譯失敗:

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

當調用 多態方法 或實例化 泛型類 時,也不必明確指定類型參數。Scala 編譯器將從上下文和實際方法的類型/構造函數參數的類型推斷出缺失的類型參數。

看下面兩個例子:

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

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

參數

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

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

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

何時 不要 依賴類型推斷

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

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

var obj = null

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

obj = new AnyRef

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

到此,相信大家對“scala的類型推斷是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白城市| 宁武县| 正镶白旗| 保定市| 苏尼特右旗| 大邑县| 甘孜| 瑞金市| 正阳县| 柘城县| 庆云县| 霍山县| 大同县| 英吉沙县| 徐水县| 吐鲁番市| 肇庆市| 蚌埠市| 河北区| 安化县| 新源县| 余江县| 信阳市| 通州区| 武定县| 九江县| 织金县| 桐乡市| 灌阳县| 永仁县| 拜城县| 宣武区| 长岭县| 扬中市| 新干县| 抚州市| 闽清县| 瓦房店市| 鸡西市| 革吉县| 噶尔县|