【问题标题】:Should String and CharArray be the same thing?String 和 CharArray 应该是同一个东西吗?
【发布时间】:2019-07-20 19:33:08
【问题描述】:

在设计编程语言 API 时,有哪些优点和缺点:

  • StringArray(orlinkedList) of chars 类型无法区分。

喜欢:Haskell、Erlang、C

  • String 是自己的类型和 Array(orlinkedList) of chars 类型是不同的。

喜欢:Java、C#、Lisp、JavaScript,...

【问题讨论】:

    标签: api api-design language-design library-design


    【解决方案1】:

    使它们成为同一类型的原因:

    • 简单。需要学习的类型更少
    • 正交性。所有通用数组代码都适用于字符串

    让它们不同的原因:

    • 可以通过类型强制执行不变量。如果您的字符串存储在并非所有可能的位模式都有效的编码中,例如 UTF8,那么如果 String 不是它自己的类型,那么就有可能有无效的字符串。

    • 可以消除同一字符串的多个副本。有一种称为“interning”的技术,其中程序中使用的类型的每个不同值的一个副本一次在内存中。这通常由语言自动为字符串完成,包括您提到的具有单独字符串类型的语言(至少对于 Lisp 的某些实现)。对字符串这样做有很好的效果,可以进行字符串比较,包括更有效的哈希表中的字符串键。您可以对已知唯一指针而不是字符串值进行比较。

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多