您好,登錄后才能下訂單哦!
這篇文章主要講解了“scala基本類型和成員定義怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“scala基本類型和成員定義怎么理解”吧!
類成員的類型取決于成員被引用的方式。主要有三個概念:
1. 類型 T 的基本類型集合
2. 從前綴類型 S 中可見的類 C 中的類型 T
3. 類型 T 的成員綁定集合
以下是這三個概念的詳細定義
1. 類 T 的基本類型集合定義如下
? C 是類型 C 以及其父類型 T1,...,Tn 的基本類型,同時也是組合類型 T1
with ... with T
n {R}的基本類型。
? 類型別名的基本類型是別名的類型的基本類型
? 抽象類型的基本類型是其上界的基本類型
? 參數化類型 C[T1,...,Tn]的基本類型是類型 C 的基本類型, C 的每一個類
型參數 ai被對應的參數類型 Ti 代替
? 單例類型 p.type 的基本類型是類型 p 的基本類型
? 復合類型 T1 with ... with Tn {R}的基本類型是所有 Ti 的基本類型的
縮減合并。意思是設合集 Φ 為 Ti 的基本類型的合集,如果 Φ 包括同一個類
的多個類型實例,比如 Si#C[Ti1,...,Tin](i∈I),那么所有的這些實例
將會被一個與其他一致的實例代替。如果沒有這樣一個實例存在就會導致錯
誤。 如果存在這樣一個縮減合并,那么該集合會產生類類型的集合,不同的
類型是不同類的實例。
? 類型選擇 S#T 的基本類型如下確定:如果 T 是一個抽象類或別名,那么前面
的子句就會被應用。否則 T 必須是一個定義在某個類 B 中的(可能還是參數
化的)類類型。那么 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 個類型參數,那么
? 如果 S 有基本類型 D[U1,...,Un], [U1,...,Un]是類型參數,那么從
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 是其他類型,那么將在所有其類型組件中執行以上描述的映射
如果 T 是一個可能參數化的類類型, T 的類定義在某個類 D 中, S 是某前綴
類型,那么“從 S 中看到 T”就是“從 S 中看到 D 中的 T 的簡寫”。
3. 類型 T 的成員綁定集合是(1)T 的基本類型中存在某類的類型實例和 C 中 d?的定
義或聲明( d 是將 d?中的類型 T?替換為從 T 中看到的 C 中的 T?得到的結果)等
綁定(2)類型修飾的綁定(§3.2.7)(如果有的話)。
類型映射 S#t 的定義就是 S 中類型 t 的成員綁定 dt。在此情況下,我們可以說
S#t 由 dt定義。
感謝各位的閱讀,以上就是“scala基本類型和成員定義怎么理解”的內容了,經過本文的學習后,相信大家對scala基本類型和成員定義怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。