sno*_*fox 59 c++ java string immutability
为此选择了几种语言,例如C#,Java和Python.如果它旨在为比较等操作节省内存或提高效率,它对连接和其他修改操作有什么影响?
mik*_*era 73
不可变类型通常是一件好事:
因此,使字符串不可变是一种非常合理的语言设计选择.
有些语言(特别是像Haskell和Clojure这样的函数式语言)甚至更进一步,几乎所有东西都是不可变的.如果您对不变性的好处感兴趣,这个有启发性的视频非常值得一看.
不可变类型有一些小的缺点:
总的来说,不变性的优势远远超过了微小的劣势.即使你只对性能感兴趣,复制的并发优势和便宜性通常会使不可变字符串比具有锁定和防御复制的可变字符串更高效.
Mic*_*rdt 16
它主要用于防止编程错误.例如,字符串经常用作哈希表中的键.如果它们可以更改,则哈希表将被破坏.这只是一个例子,当你使用它时,有一个数据变化会导致问题.安全性是另一个:如果你在执行他们请求的操作之前检查是否允许用户访问给定路径的文件,那么包含路径的字符串最好不是可变的......
当你进行多线程处理时,它变得更加重要.不可变数据可以在线程之间安全地传递,而可变数据会导致无休止的头痛.
基本上,不可变数据使得在其上工作的代码更容易推理.这就是纯函数式语言试图保持一切不可变的原因.
| 归档时间: |
|
| 查看次数: |
14278 次 |
| 最近记录: |