溫馨提示×

溫馨提示×

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

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

Scala的二維布局庫和抽象類怎么使用

發(fā)布時間:2021-12-09 17:34:47 來源:億速云 閱讀:129 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“Scala的二維布局庫和抽象類怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Scala的二維布局庫和抽象類怎么使用”吧!

二維布局庫

創(chuàng)造一個制造和渲染二維布局元素的庫,每個元素將代表一個填充字符的長方形。方便起見,庫將提供名為“elem”的工廠方法來通過傳入的數(shù)據(jù)構(gòu)造新的元素。例如,你將能通過工廠方法采用下面的寫法創(chuàng)建帶有字串的元素:

elem(s: String): Element

正如你所見,元素將以名為Element的類型為模型。你將能在元素上調(diào)用above或beside,傳入第二個元素,從而得到合并了這兩個的新元素。例如,下面的表達(dá)式將構(gòu)建一個包含兩列,每列高度為二,的更大的元素:

val column1 = elem("hello") above elem("***")  val column2 = elem("***") above elem("world")  column1 beside column2

打印這個表達(dá)式的結(jié)果將是:

hello ***  *** world

在對象能通過簡單的部件及組合操作符的幫助被構(gòu)建的系統(tǒng)中,布局元素是個好的例子。本章里,我們將定義類使得元素對象能被構(gòu)建自數(shù)組,行記錄,以及長方形——簡單部件。我們還將定義組合操作符above和beside。這種組合操作符也經(jīng)常被稱為組合子:combinator,因為它們把某些區(qū)域的元素組合成新的元素。

以組合子的方式思考問題通常是實現(xiàn)庫的設(shè)計的好方法:它能回報以考慮在應(yīng)用域構(gòu)建對象的基礎(chǔ)方法。什么是簡單對象?用什么方式能讓更多有趣的對象通過簡單對象構(gòu)造出來?組合子是怎么掛在一起的?什么是最通用的組合?它們滿足任何有趣的規(guī)則嗎?如果你對這些問題都有好的答案,你的庫設(shè)計就在正軌上了。

抽象類

我們的***個任務(wù)就是定義代表布局元素的類型Element。由于元素是二維的字符長方形,包括成員,指向布局元素內(nèi)容的contents,是合情合理的。內(nèi)容可以被表達(dá)成字串?dāng)?shù)組,這里每個字串代表一行。因此,contents返回的結(jié)果類型就是Array[String]。代碼10.1展示了它看起來的樣子。

這個類里,contents被聲明為沒有實現(xiàn)的方法。換句話說,方法是類Element的抽象:abstract成員。具有抽象成員的類本身必須被聲明為抽象的,只要在class關(guān)鍵字之前加上abstract修飾符即可:

abstract class Element {  def contents: Array[String]  }

代碼 10.1 定義抽象方法和類

abstract class Element ...

abstract修飾符說明類或許有沒實現(xiàn)的抽象成員。結(jié)果,你不能實例化抽象類。如果你嘗試這么做,你會得到編譯器錯誤:

scala> new Element  < console>:5: error: class Element is abstract;   cannot be instantiated   new Element   ?

請注意類Element的contents方法并沒帶有abstract修飾符。如果方法沒有實現(xiàn)(也就是說,沒有等號或方法體),它就是抽象的。不像Java,方法的聲明中不需要(或允許)抽象修飾符。擁有實現(xiàn)的方法被稱為具體的:concrete。

到此,相信大家對“Scala的二維布局庫和抽象類怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

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

AI