字串

字串是一系列字元文字。到目前為止,所有現代程式語言都支援字串, 1 但語言設計者之間沒有就如何對字串進行分類達成共識。就程式語言設計而言,需要考慮兩個主要問題。

  1. 字串應該被視為原始值還是複合值?
  2. 語言本身應該提供什麼字串操作? 2

通過使字串成為原始值,語言提供的字串操作都是內建的; 並且不能在語言本身中定義。這允許在編譯器級別進行某些優化 - 特別是關於記憶體佈局和使用所謂的字串池重用字串。權衡在於無法使用 drop 替換字串操作,並且必須使用普通函式呼叫來呼叫此類函式,而使用內建操作的語法通常明顯不同。結果是,如果發現更有效的演算法,則不能簡單地改變正在使用的字串庫。一個人為的例子是在開發 Boyer-Moore 字串搜尋演算法之前將子字串搜尋作為核心特徵集的一部分。

相反,通過將字串定義為複合值(例如字元陣列),所有常用的陣列操作都將自動應用於字串。但是,這會導致語言中的所有字串都是固定長度的。 3

最終,另一種方法是將字串表示為字元列表 - 與陣列一樣 - 允許表示繼承所有列表操作。

1 儲存更多深奧的內容,例如 Piet
2 語言通常提供字串比較,主要是相等,將字串與其他字串連線,替換單個字元和子字串以及字串的詞法排序。 3 通常