Ocaml缓冲区修改具体位置
Ocaml buffer modification specific position
我目前 building/concatenating 在我正在开发的程序中有相当大的字符串。为了提供一些上下文,完整的字符串有一个终端的大小。自从我开发终端应用程序以来,这种情况经常发生。我找到了数据结构 Buffer
,这似乎是用标准库连接字符串的最有效方法。
如果我还经常需要在特定位置更新缓冲区的某些部分,这是正确的选择吗?让我们说字符 20 到 50 ?
在这种情况下有更好的方法吗?
AFAICS,除了添加到末尾之外,无法更改 Buffer.t
的内容。也许您应该看一下模块 Bytes
。 A Bytes.t
到处都是可变的,只有长度不能改变。但看起来你需要的长度无论如何都是固定的:终端的大小(如果终端 window 被调整大小,你可以用一个新的替换 Bytes.t
)。
@coredump 和@kne 给出了很好的答案。我可能只是补充说,在当今世界,一个字节不能很好地表示一个字符。所以你可以考虑使用数组或者双数组。
我目前 building/concatenating 在我正在开发的程序中有相当大的字符串。为了提供一些上下文,完整的字符串有一个终端的大小。自从我开发终端应用程序以来,这种情况经常发生。我找到了数据结构 Buffer
,这似乎是用标准库连接字符串的最有效方法。
如果我还经常需要在特定位置更新缓冲区的某些部分,这是正确的选择吗?让我们说字符 20 到 50 ? 在这种情况下有更好的方法吗?
AFAICS,除了添加到末尾之外,无法更改 Buffer.t
的内容。也许您应该看一下模块 Bytes
。 A Bytes.t
到处都是可变的,只有长度不能改变。但看起来你需要的长度无论如何都是固定的:终端的大小(如果终端 window 被调整大小,你可以用一个新的替换 Bytes.t
)。
@coredump 和@kne 给出了很好的答案。我可能只是补充说,在当今世界,一个字节不能很好地表示一个字符。所以你可以考虑使用数组或者双数组。