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

scala的內(nèi)部類怎么使用

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

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、縉云網(wǎng)站維護(hù)、網(wǎng)站推廣。

在Scala中,一個(gè)類可以作為另一個(gè)類的成員。 在一些類似 Java 的語言中,內(nèi)部類是外部類的成員,而 Scala 正好相反,內(nèi)部類是綁定到外部對象的。 假設(shè)我們希望編譯器在編譯時(shí)阻止我們混淆節(jié)點(diǎn) nodes 與圖形 graph 的關(guān)系,路徑依賴類型提供了一種解決方案。

為了說明差異,我們簡單描述了一個(gè)圖形數(shù)據(jù)類型的實(shí)現(xiàn):

class Graph {  class Node {    var connectedNodes: List[Node] = Nil    def connectTo(node: Node) {      if (!connectedNodes.exists(node.equals)) {        connectedNodes = node :: connectedNodes      }    }  }  var nodes: List[Node] = Nil  def newNode: Node = {    val res = new Node    nodes = res :: nodes    res  }}

該程序?qū)D表示為節(jié)點(diǎn)列表 (List[Node])。 每個(gè)節(jié)點(diǎn)都有一個(gè)用來存儲(chǔ)與其相連的其他節(jié)點(diǎn)的列表 (connectedNodes)。 類 Node 是一個(gè) 路徑依賴類型,因?yàn)樗短自陬?Graph 中。 因此,connectedNodes 中存儲(chǔ)的所有節(jié)點(diǎn)必須使用同一個(gè) Graph 的實(shí)例對象的 newNode 方法來創(chuàng)建。

val graph2: Graph = new Graphval node1: graph2.Node = graph2.newNodeval node2: graph2.Node = graph2.newNodeval node3: graph2.Node = graph2.newNodenode1.connectTo(node2)node3.connectTo(node1)

為清楚起見,我們已經(jīng)明確地將 node1node2,和 node3 的類型聲明為graph2.Node,但編譯器其實(shí)可以自動(dòng)推斷出它。 這是因?yàn)楫?dāng)我們通過調(diào)用 graph2.newNode 來調(diào)用 new Node 時(shí),該方法產(chǎn)生特定于實(shí)例 graph2Node 類型的實(shí)例對象。

如果我們現(xiàn)在有兩個(gè)圖,Scala 的類型系統(tǒng)不允許我們將一個(gè)圖形中定義的節(jié)點(diǎn)與另一個(gè)圖的節(jié)點(diǎn)混合,因?yàn)榱硪粋€(gè)圖形的節(jié)點(diǎn)具有不同的類型。下例是一個(gè)非法的程序:

val graph2: Graph = new Graphval node1: graph2.Node = graph2.newNodeval node2: graph2.Node = graph2.newNodenode1.connectTo(node2)      val graph3: Graph = new Graphval node3: graph3.Node = graph3.newNodenode1.connectTo(node3)

類型 graph2.Node 與類型 graph3.Node 完全不同。在 Java 中,上一個(gè)示例程序中的最后一行是正確的。對于兩個(gè)圖的節(jié)點(diǎn),Java 將分配相同的類型 Graph.Node; 即 Node 以類 Graph 為前綴。在Scala中也可以表示出這種類型,它寫成了 Graph#Node。如果我們希望能夠連接不同圖形的節(jié)點(diǎn),我們必須通過以下方式更改圖類的初始實(shí)現(xiàn)的定義:

class Graph {  class Node {    var connectedNodes: List[Graph#Node] = Nil    def connectTo(node: Graph#Node) {      if (!connectedNodes.exists(node.equals)) {        connectedNodes = node :: connectedNodes      }    }  }  var nodes: List[Node] = Nil  def newNode: Node = {    val res = new Node    nodes = res :: nodes    res  }}

感謝各位的閱讀,以上就是“scala的內(nèi)部類怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對scala的內(nèi)部類怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

本文名稱:scala的內(nèi)部類怎么使用
文章來源:http://aaarwkj.com/article24/pdhjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作商城網(wǎng)站、全網(wǎng)營銷推廣、Google品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)

廣告

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

外貿(mào)網(wǎng)站制作
色婷婷综合激情一区二区| 日韩无码一区二区视频| 国产成人一区二区三区综合区| 97精品国产高清在线| 天天日天天天干夜夜操| 日韩亚洲国产激情一区二区| 欧美日韩一区中文字幕| 91精品国产色综合久久不| 给我免费在线观看视频| 亚洲精品国产av一区二区三区| 另类国产人妖免费视频网站大全| 天堂av一区二区三区| 射精视频在线观看免费| 亚洲天堂日韩欧美在线| 精品国产一区二区三区卡| 午夜福利视频欧美成人| 久久久久久亚洲精品人妻| 国产中文字幕一区二区在线观看| 久久国产精品一区免费观看| 黑人爆操中国女孩在线观看| 日本在线精品在线观看| 国产午夜福利不卡在线观看| 久久裸体国语精品国产91| 农村人妻一区二区三区视频| 国产亚洲中文字幕无线乱码 | 人妻大乳一区二区三区| 日本国产精品久久一线| 在线播放亚洲一区二区三区| 久久av少妇亚洲精品| 人妻少妇被猛烈进入久久精品| 亚洲成av人在线观看福利| 韩国电视剧大全免费国语观看 | 日韩欧美中文字幕一区二区| 中文字幕日本专区人妻| 中文有码人妻字幕在线| 欧美丝袜熟女日韩亚洲| 国产精品久久久亚洲不卡| 日韩精品专区在线影院重磅 | 黑丝美女大战白丝美女| 中文字幕av在线有码| 国产在线精品91国自产拍|