我最近在https://github.com/dbuenzli/astring遇到了Ocaml的Astring
模块。
图书馆的作者在自述文件中说明了以下内容:
...fully exploits OCaml's newfound string immutability
字符串的不变性给字符串库的实现带来了哪些优势?我试过阅读源代码,但无法找到任何具体的优势。有性能优势吗? 它是否允许更安全的模式?
答案 0 :(得分:4)
不变性的主要用途是你可以操纵子串而不需要副本。
这就是a separate module for substrings的原因。如果字符串是可变的,整个模块就不会发出声音。
答案 1 :(得分:3)
当您的函数返回一个字符串并且该字符串已经存在时,您不必为结果创建该现有字符串的副本。
以下是一些简单的例子:
String.append s ""
String.append "" s
String.trim "bla"
如果你的字符串是可变的,你总是必须在这些情况下返回副本。