- Scala編程(第5版)
- (德)馬丁·奧德斯基等
- 707字
- 2022-05-06 15:51:39
5.3 字符串插值
Scala包括了一個靈活的機(jī)制來支持字符串插值,允許在字符串字面量中嵌入表達(dá)式。最常見的用途是為字符串拼接提供一個更精簡和易讀的替代方案。舉個例子:

表達(dá)式s"Hello, $name!"是一個被處理的(processed)字符串字面量。由于字母s出現(xiàn)在首個雙引號前,Scala將使用s這個字符串插值器來處理該字面量。s字符串插值器會對內(nèi)嵌的每個表達(dá)式求值,對求值結(jié)果調(diào)用toString方法,替換掉字面量中的那些表達(dá)式。因此,s"Hello, $name!"會交出"Hello, reader!",與"Hello, " + name + "!"的結(jié)果一樣。
在被處理的字符串字面量中,可以隨時用美元符號($)開始一個表達(dá)式。對于那些單變量的表達(dá)式,通常可以在美元符號后面直接給出變量的名稱。Scala將從美元符號開始到首個非標(biāo)識符字符的部分作為表達(dá)式。如果表達(dá)式包含了非標(biāo)識符字符,就必須將它放在花括號中,左花括號需要緊跟美元符號。例如:

Scala默認(rèn)還提供了兩種字符串插值器:raw和f。raw字符串插值器的行為與s字符串插值器的類似,不過它并不識別字符轉(zhuǎn)義序列(比如,表5.2給出的那些)。舉例來說,如下語句將打印出4個反斜杠,而不是2個反斜杠:

f字符串插值器允許給內(nèi)嵌的表達(dá)式加上printf風(fēng)格的指令。你需要將指令放在表達(dá)式之后,以百分號(%)開始,使用java.util.Formatter中給出的語法。比如,可以這樣來格式化π:

如果不對內(nèi)嵌表達(dá)式給出任何格式化指令,則f字符串插值器將默認(rèn)使用%s,其含義是用toString方法的值來替換,就像s字符串插值器那樣。例如:

在Scala中,字符串插值是通過在編譯期重寫代碼來實(shí)現(xiàn)的。編譯器會將任何由某個標(biāo)識符緊接著字符串字面量的(左)雙引號這樣的表達(dá)式當(dāng)作字符串插值器表達(dá)式處理。我們在前面看到的字符串插值器s、f和raw,就是通過這個通用的機(jī)制實(shí)現(xiàn)的。類庫作者和用戶可以定義其他字符串插值器來滿足不同的用途。
- Building Modern Web Applications Using Angular
- Windows Presentation Foundation Development Cookbook
- Linux命令行與shell腳本編程大全(第4版)
- 青少年P(guān)ython編程入門
- D3.js 4.x Data Visualization(Third Edition)
- Learning DHTMLX Suite UI
- UVM實(shí)戰(zhàn)
- Learning Apache Cassandra
- Learning jQuery(Fourth Edition)
- Principles of Strategic Data Science
- Spring 5 Design Patterns
- Java Web應(yīng)用開發(fā)給力起飛
- Java 9 Programming By Example
- Visual Basic程序設(shè)計(jì)基礎(chǔ)
- Python機(jī)器學(xué)習(xí)開發(fā)實(shí)戰(zhàn)