在设计编程语言 API 时,有哪些优点和缺点:
- 字符的字符串类型和数组(或链接列表)是无法区分的。
喜欢在:Haskell、Erlang、C
- String是它自己的类型,而 chars类型的 Array(或linkedList)是不同的。
喜欢在:Java、C#、Lisp、JavaScript、...
在设计编程语言 API 时,有哪些优点和缺点:
喜欢在:Haskell、Erlang、C
喜欢在:Java、C#、Lisp、JavaScript、...
使它们为同一类型的原因:
让它们不同的原因:
可以通过类型强制执行不变量。如果您的字符串存储在并非所有可能的位模式都有效的编码中,例如 UTF8,那么如果 String 不是它自己的类型,那么就有可能有无效的字符串。
可以消除同一字符串的多个副本。有一种称为“interning”的技术,其中程序中使用的类型的每个不同值的一个副本一次在内存中。这通常由语言自动为字符串完成,包括您提到的具有单独字符串类型的语言(至少对于 Lisp 的某些实现)。对字符串这样做有很好的效果,可以进行字符串比较,包括更有效的哈希表中的字符串键。您可以对已知唯一指针而不是字符串值进行比较。