问题描述
尝试编译以下表达式时:
String.blit (String.make tfs.len ' ') 0 tfs.txt 0 tfs.len;
编译器抱怨以下错误:
Error: This expression has type string but an expression was expected of type bytes
and the variable 'tfs.txt' (of type string) is pointed at.
正如某些论坛中所建议的,我尝试将变量 OCAMLParaM
设置为值:safe_string=0,_
但没有结果
我在 Ubuntu 20.01.01 LTS 下使用 OCaml 4.11.1
解决方法
从 OCaml 4.10.0 开始,不可变 string
和可变 bytes
之间的区别是配置时默认值,不能逐个程序更改。
如果您正在尝试编译一些旧的遗留代码,使用没有这种区别配置的 OCaml 版本可能是有意义的。
否则,当需要就地更改字符串时(从您的代码片段中不清楚),调整您的代码以使用 bytes
会更具前瞻性。