[英]How to convert char list to string in OCaml?
我有一个字符列表['a';'b';'c']
如何将其转换为字符串“abc”?
谢谢 x
您可以创建一个长度等于列表长度的字符串,然后使用计数器折叠列表并使用列表内容初始化字符串......但是,从 OCaml 4.02 开始,字符串类型开始为了向不变性的方向转变(并在 4.06 中变得不可变),您应该开始将字符串视为不可变的数据结构。 所以,让我们尝试另一种解决方案。 有专门用于字符串构建的Buffer
模块:
# let buf = Buffer.create 16;;
val buf : Buffer.t = <abstr>
# List.iter (Buffer.add_char buf) ['a'; 'b'; 'c'];;
- : unit = ()
# Buffer.contents buf;;
- : string = "abc"
或者,作为一个函数:
let string_of_chars chars =
let buf = Buffer.create 16 in
List.iter (Buffer.add_char buf) chars;
Buffer.contents buf
let cl2s cl = String.concat "" (List.map (String.make 1) cl)
从 OCaml 4.07 开始,您可以使用序列轻松地做到这一点。
let l = ['a';'b';'c'] in
let s = String.of_seq (List.to_seq l) in
assert ( s = "abc" )
常用的Base库还提供了Base.String.of_char_list
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.