第七章 字串 字元流

2021-09-11 10:11:05 字數 2702 閱讀 2279

本文系閱讀閱讀原章節後總結概括得出。由於需要我進行一定的概括提煉,如有不當之處歡迎讀者斧正。如果你對內容有任何疑問,歡迎共同交流討論。

如果你覺得這兩節的內容比較雜亂,強烈推薦我的這篇總結: 你其實真的不懂print("hello,world")

如果型別比較複雜,你可能需要考慮實現streamable協議。在這個協議中定義了乙個范型函式writeto,引數所屬的型別必須實現outputstreamtype協議,方法的呼叫者把自己寫入這個引數中(最簡單方法就是呼叫print函式)。我們呼叫的是過載了的print函式,所以千萬不要忘記加上引數tostream,否則會很難發現這個錯誤。舉個例子說明:

extension

person: streamable

}複製**

因為字串就實現了outputstreamtype協議,所以我們可以把person型別的變數寫入到字串中:

var description = ""

let person = person(name: "kt", age: 21)

person.writeto(&description)

print(description) // 輸出結果:[name is kt, age is 21]

複製**

我們把實現了outputstreamtype協議的型別稱為輸出流,string是標準庫中定義的唯一乙個輸出流型別。當然,也可以手動定義自己的輸出流,只要實現outputstreamtype協議中定義的write方法即可:

struct

arraystream: outputstreamtype

}複製**

這樣,我們就可以把多個字串寫入arraystream型別中:

var arraystream = arraystream()

let s1 = "s1"

let s2 = "s2"

s1.writeto(&arraystream)

s2.writeto(&arraystream)

print(arraystream) // 如果你需要定製輸出效果,可以像上一節所說的,實現customstringconvertible協議

複製**

需要強調一點,這並非輸出流的正確使用方法,它僅用於演示outputstreamtype的工作原理。

雖然字串是唯一實現了outputstreamabletype協議的型別,但諸如print這樣的函式,也可以很好地處理streamable型別的引數,舉個例子:

struct

slowstreamer: streamable, arrayliteralconvertible

func

writeto

(inout target: target) }

}let slow: slowstreamer = [

"you'll see that ghis gets",

"written slowly line-by-line",

"to the standard output"

]print(slow)

複製**

執行程式後你會發現,在執行print函式的過程中,每一行字串不斷地被輸出。在writeto函式的內部我們呼叫了print方法,其第二個引數為標準輸出,你也可以實現和此類似的標準錯誤輸出:

struct

stderr: outputstreamtype

}var standarderror = stderr()

print("oops!", tostream: &standarderror) // 輸出結果:oops!

複製**

還可以在輸出流中對輸入值做些處理,我們實現乙個自定義的輸出流:

struct

replacingstream

: outputstreamtype

mutating

func

write

(string: string)

print(towrite, separator:"", tostream: &outputstream)}}

複製**

如果把字串輸出到這個流而不是標準輸出流,我們就達到了處理字串的效果:

var replacer = replacingstream(replacing: ["1":"2"], output: standarderror)

let source = "111333"

print(source, tostream: &replacer) // 輸出結果:222333

複製**

第七章 字串

python字串 乙個有序的字元的集合,用來儲存和表現基於文字的資訊。字串常量 1 單雙引號字串是一樣的 在python字串中,單引號和雙引號字元是可以互換的。2 用轉義序列代表特殊位元組 反斜槓用來引入特殊的位元組編碼,是轉義序列。3 raw字串抑制轉義 如果字母r 大寫或小寫 出現在字串的第乙個...

第七章 字串 字串除錯

本文系閱讀閱讀原章節後總結概括得出。由於需要我進行一定的概括提煉,如有不當之處歡迎讀者斧正。如果你對內容有任何疑問,歡迎共同交流討論。如果你覺得這兩節的內容比較雜亂,強烈推薦我的這篇總結 你其實真的不懂print hello,world 不知道你有沒有注意到乙個細節,不管你使用什麼型別的引數,pri...

Python 第七章字串

一.單選題 共7題,70.0分 a 分片 b 合併 c 索引 d 賦值 正確答案 a world world print hello world a helloworld b hello world c hello world d hello world 正確答案 a a abc def b joi...