字符串

字符串是一系列字符文字。到目前为止,所有现代编程语言都支持字符串, 1 但语言设计者之间没有就如何对字符串进行分类达成共识。就编程语言设计而言,需要考虑两个主要问题。

  1. 字符串应该被视为原始值还是复合值?
  2. 语言本身应该提供什么字符串操作? 2

通过使字符串成为原始值,语言提供的字符串操作都是内置的; 并且不能在语言本身中定义。这允许在编译器级别进行某些优化 - 特别是关于内存布局和使用所谓的字符串池重用字符串。权衡在于无法使用 drop 替换字符串操作,并且必须使用普通函数调用来调用此类函数,而使用内置操作的语法通常明显不同。结果是,如果发现更有效的算法,则不能简单地改变正在使用的字符串库。一个人为的例子是在开发 Boyer-Moore 字符串搜索算法之前将子字符串搜索作为核心特征集的一部分。

相反,通过将字符串定义为复合值(例如字符数组),所有常用的数组操作都将自动应用于字符串。但是,这会导致语言中的所有字符串都是固定长度的。 3

最终,另一种方法是将字符串表示为字符列表 - 与数组一样 - 允许表示继承所有列表操作。

1 保存更多深奥的内容,例如 Piet
2 语言通常提供字符串比较,主要是相等,将字符串与其他字符串连接,替换单个字符和子字符串以及字符串的词法排序。 3 通常