在習題 9 中我丟給你了一些新東西。我讓你看到兩種讓字串擴展到多行的方法。第一種方法是在月份中間用?`\n`?(back-slash n) 隔開。這兩個字串的作用是在該位置上放入一個「新行(new line)」字符。
使用反斜線?`\`?(back-slash) 可以將難印出的字符放到字串裡。針對不同的符號有很多這樣的所謂「跳脫序列(escape sequences)」,但有一個特殊的跳脫序列,就是?`\`?雙反斜線( double back-slash)。這兩個字符組合會印出一個反斜線來。接下來我們做幾個練習,然後你就知道這些跳脫序列的意義了。
另外一種重要的跳脫序列是用來將單引號?`'`?和雙引號?`"`?跳脫。想像你有一個用雙引號括起來的字串,你想要在字串裡的內容裡再加入一組雙引號進去,比如你想說?`" I "understand" joke."`?,Ruby 就認為?`"understand"`?前後的兩個引號是字串的邊界,從而把字串弄錯。你需要一種方法告訴 Ruby 字串裡面的雙引號不是真正的雙引號。
要解決這個問題,你需要將雙引號和單引號跳脫,讓 Ruby 將引號也包含到字串裡面去。這裡有一個例子:
~~~
"I am 6'2\" tall." # escape double-quote inside string
'I am 6\'2" tall.' # escape single-quote inside string
~~~
第二種方法是使用文件語法(document syntax),也就是?`<<NAME`?,你可以在鍵入?`NAME`?前放入\ 任意多行的文字。接下來你可以看到如何使用。
~~~
tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."
fat_cat = <<MY_HEREDOC
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
MY_HEREDOC
puts tabby_cat
puts persian_cat
puts backslash_cat
puts fat_cat
~~~
## 你應該看到的結果
注意你打出來的 tab 字符,這節練習中的文字間隔符號對於答案的正確性是很重要的。
~~~
$ ruby ex10.rb
I'm tabbed in.
I'm split
on a line.
I'm \ a \ cat.
I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass
$
~~~
## 加分習題
1. 上網搜尋一下還有哪些可用的跳脫字符。
2. 結合跳脫序列和格式化字串,創造一種複雜的格式。
- 笨方法更簡單
- 習題 0: 準備工作
- 習題 1: 第一個程式
- 習題 2: 注釋和井號
- 習題 3: 數字和數學計算
- 習題 4: 變數(variable)和命名
- 習題 5: 更多的變數和印出
- 習題 6: 字串(string)和文字
- 習題 7: 更多印出
- 習題 8: 印出,印出
- 習題 9: 印出,印出,印出
- 習題 10: 那是什么?
- 習題 11: 提問
- 習題 12: 模組 (Module)
- 習題 13: 參數、解包、參數
- 習題 14: 提示和傳遞
- 習題 15: 讀取檔案
- 習題 16: 讀寫檔案
- 習題 17: 更多的檔案操作
- 習題 18: 命名、變數、程式碼、函式
- 習題 19: 函式和變數
- 習題 20: 函式和檔案
- 習題 21: 函式可以傳回東西
- 習題 22: 到現在你學到了哪些東西?
- 習題 23: 閱讀一些程式碼
- 習題 24: 更多練習
- 習題 25: 更多更多的練習
- 習題 26: 恭喜你,現在來考試了!
- 習題 27: 記住邏輯關系
- 習題 28: 布林(Boolean)表示式練習
- 習題 29: 如果(if)
- 習題 30: Else 和 If
- 習題 31: 做出決定
- 習題 32: 回圈和陣列
- 習題 33: While 回圈
- 習題 34: 存取陣列里的元素
- 習題 35: 分支 (Branches) 和函式 (Functions)
- 習題 36: 設計和測試
- 習題 37: 復習各種符號
- 習題 38: 閱讀程式碼
- 習題 39: 陣列的操作
- 習題 40: Hash, 可愛的 Hash
- 習題 41: 來自 Percal 25 號行星的哥頓人(Gothons)
- 習題 42: 物以類聚
- 習題 43: 你來制作一個游戲
- 習題 44: 評估你的游戲
- 習題 45: 物件、類和從屬關系
- 習題 46: 一個專案骨架
- 習題 47: 自動化測試
- 習題 48: 更進階的使用者輸入
- 習題 49: 創造句子
- 習題 50: 你的第一個網站
- 習題 51: 從瀏覽器中取得輸入
- 習題 52: 創造你的網頁游戲
- 下一步
- 一個老程式設計師的建議