溫馨提示×

溫馨提示×

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

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

scala基本類型和成員定義怎么理解

發(fā)布時間:2021-12-08 15:38:14 來源:億速云 閱讀:132 作者:iii 欄目:云計算

這篇文章主要講解了“scala基本類型和成員定義怎么理解”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“scala基本類型和成員定義怎么理解”吧!

類成員的類型取決于成員被引用的方式。主要有三個概念:
1. 類型 T 的基本類型集合
2. 從前綴類型 S 中可見的類 C 中的類型 T
3. 類型 T 的成員綁定集合
以下是這三個概念的詳細定義
1. 類 T 的基本類型集合定義如下
? C 是類型 C 以及其父類型 T1,...,Tn 的基本類型,同時也是組合類型 T1
with ... with T
n {R}的基本類型。
? 類型別名的基本類型是別名的類型的基本類型
? 抽象類型的基本類型是其上界的基本類型
? 參數(shù)化類型 C[T1,...,Tn]的基本類型是類型 C 的基本類型, C 的每一個類
型參數(shù) ai被對應(yīng)的參數(shù)類型 Ti 代替
? 單例類型 p.type 的基本類型是類型 p 的基本類型
? 復(fù)合類型 T1 with ... with Tn {R}的基本類型是所有 Ti 的基本類型的
縮減合并。意思是設(shè)合集 Φ 為 Ti 的基本類型的合集,如果 Φ 包括同一個類
的多個類型實例,比如 Si#C[Ti1,...,Tin](i∈I),那么所有的這些實例
將會被一個與其他一致的實例代替。如果沒有這樣一個實例存在就會導(dǎo)致錯
誤。 如果存在這樣一個縮減合并,那么該集合會產(chǎn)生類類型的集合,不同的
類型是不同類的實例。
? 類型選擇 S#T 的基本類型如下確定:如果 T 是一個抽象類或別名,那么前面
的子句就會被應(yīng)用。否則 T 必須是一個定義在某個類 B 中的(可能還是參數(shù)
化的)類類型。那么 S#T 的基本類型就是從前綴類型 S 中看到的 B 中 T 的基
本類型。
? 既存類型 T forSome {Q}的基本類型是所有 S forSome {Q}類型, S 是
T 的基本類型
2. 從前綴類型 S 中可見的類 C 中的類型 T 只在以下條件下起作用,前綴類型 S 有一
個類型 C 的類型實例作為基本類型,即 S?#C[T1,...,Tn]。我們有以下定義
? 如果 S = ε.type,那么從 S 看到的 C 中的 T 就是 T 本身
? 否則,如果 S 是既存類型 S? forSome {Q}, 從 S?看 C 中的 T 將會是 T?,
那么從 S 看 T 中的 C 將會是 T? forSome {Q}
? 否則,如果 T 是某類 D 的第 i 個類型參數(shù),那么
? 如果 S 有基本類型 D[U1,...,Un], [U1,...,Un]是類型參數(shù),那么從
S 中看到的 C 中的 T 就是 Ui
? 否則,如果 C 定義在類 C?中,那么從 S 中看到的 C 中的 T 與在 S?中看
到的 C?中的 T 是一樣的
? 否則,如果 C 不是定義在其他類中,那么從 S 中看到的 C 中的 T 就是 T
本身
? 否則,如果 T 是某類 D 的單例類型 D.this.type,那么
? 如果 D 是 C 的子類, S 的基本類型中有一個類 D 的類型實例,那么從 S
中看到的 C 中的 T 就是 S
類型
23
? 否則,如果 C 定義在類 C?中,那么從 S 中看到的 C 中的 T 與 S?中看到
的 C?中的 T 相同
? 否則,如果 C 不是定義在其他類中,那么從 S 中看到的 C 中的 T 就是 T
本身
? 如果 T 是其他類型,那么將在所有其類型組件中執(zhí)行以上描述的映射
如果 T 是一個可能參數(shù)化的類類型, T 的類定義在某個類 D 中, S 是某前綴
類型,那么“從 S 中看到 T”就是“從 S 中看到 D 中的 T 的簡寫”。
3. 類型 T 的成員綁定集合是(1)T 的基本類型中存在某類的類型實例和 C 中 d?的定
義或聲明( d 是將 d?中的類型 T?替換為從 T 中看到的 C 中的 T?得到的結(jié)果)等
綁定(2)類型修飾的綁定(§3.2.7)(如果有的話)。
類型映射 S#t 的定義就是 S 中類型 t 的成員綁定 dt。在此情況下,我們可以說
S#t 由 dt定義。

感謝各位的閱讀,以上就是“scala基本類型和成員定義怎么理解”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對scala基本類型和成員定義怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

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

AI