scala程式設計第16章學習筆記(1)

2021-09-06 19:32:21 字數 2448 閱讀 5789

list列表的基本操作

head方法獲得列表的第乙個元素

tail方法獲得列表除第乙個元素之外的其它元素

isempty:判斷列表是否為空,空的話返回真

last:獲得列表最後乙個元素

init:獲得除最後乙個元素之外的元素

reverse:反轉列表

字首與字尾:drop、take、splitat

xs take n 返回xs列表的前n個元素,如果n大於xs.length,則返回整個xs。

xs drop n 返回xs列表除前n個元素之外的所有元素,如果n大於xs.length,則返回空列表。

splitat操作在指定位置拆分列表,並返回對偶列表。

xs splitat n等價於(xs take n, xs drop n)

例子如下:

scala> list(1, 2, 3, 4, 5) take 2res2: list[int] = list(1, 2)

scala> list(1, 2, 3, 4, 5) drop 2res3: list[int] = list(3, 4, 5)

scala> list(1, 2, 3, 4, 5) splitat 2res4: (list[int], list[int]) = (list(1, 2),list(3, 4, 5))

scala> val abcde=list('a' ,'b', 'c', 'd', 'e')

abcde: list[char] =list(a, b, c, d, e)

scala> abcde(2)

res8: char = c

scala>abcde.indices

res9: scala.collection.immutable.range = range(0, 1, 2, 3, 4)

嚙合列表:zip

zip操作可以把兩個列表組成乙個對偶列表:

scala>abcde.indices zip abcde

res10: scala.collection.immutable.indexedseq[(int, char)] = vector((0,a), (1,b),(2,c), (3,d), (4,e))

如果兩個列表的長度不一致,那麼任何不能匹配的元素將被丟掉:

scala> abcde zip list(1, 2, 3)

res11: list[(char, int)] = list((a,1), (b,2), (c,3))

zipwithindex把列表元素與索引值嚙合在一起

scala>abcde.zipwithindex

res12: list[(char, int)] = list((a,0), (b,1), (c,2), (d,3), (e,4))

顯示列表:tostring方法和mkstring方法

tostring操作返回列表的標準字串表達形式:

scala>abcde.tostring

res13: string = list(a, b, c, d, e)

如果需要其他表達形式,可以使用mkstring方法。xs mkstring(pre, sep, post)

其中pre是需要在顯示的元素之前的字首字串,sep為兩個元素之間的分割字串,post為顯示在最後面的字尾字串。

xs.mkstring 等價於 xs mkstring("", sep, "")

xs.mkstring 等價於 xs mkstring ""

scala> abcde mkstring ("[", ",", "]")

res15: string =[a,b,c,d,e]

scala> abcde mkstring ""res17: string =abcde

scala>abcde.mkstring

res19: string =abcde

scala> abcde mkstring ("list(", ", ", ")")

res20: string = list(a, b, c, d, e)

mkstring方法還有名為addstring的變體,它可以把構建好的字串新增到stringbuilder物件中,而不是作為結果返回:

scala> val buf = new

stringbuilder

buf: stringbuilder =scala> abcde addstring (buf, "(", ";", ")")

res21: stringbuilder = (a;b;c;d;e)

mkstring和addstring方法都繼承自list的超特質iterable,因此他們可以應用到各種可列舉的集合類上。

《快學Scala》學習筆記 第16章 XML處理

這是一篇 快學scala 的讀書筆記,需要具備scala語言的基礎,歡迎讀者與我一起 或者教我新知識呀 scala對xml有內建支援,直接用xml 就行 import scala.xml.elem import scala.xml.nodebuffer val doc elem fred stitl...

第16章 網路程式設計

網路通訊協議 計算機網路中實現通訊必須有一些約定,即通訊協議,對速率 傳輸 結構 傳輸控制步驟 出錯控制等制定標準。通訊協議分層的思想 由於結點之間聯絡很複雜,在制定協議時,把複雜成份分解成一些簡單的成份,再將它們復合起來。最常用的復合方式是層次方式,即同層間可以通訊 上一層可以呼叫下一層,而與再下...

第16章 網路程式設計

利用套接字 socket 開發網路應用程式早已被廣泛的採用,以至於成為事實上的標準。通訊的兩端都要有socket,是兩台機器間通訊的端點 網路通訊其實就是socket間的通訊。socket允許程式把網路連線當成乙個流,資料在兩個socket間通過io傳輸。一般主動發起通訊的應用程式屬客戶端,等待通訊...