我有一个表示标签和一系列数据值的列表,如下所示:(包含更多元素)
[10; 0; 0; 1; 0; 0; 1]
我想把它写成这样的文件:
|y 10 |x 0 0 1 0 0 1
完成此格式化的最简单方法是什么?
答案 0 :(得分:6)
您可以使用模式匹配来分隔列表的第一个元素:
let input = [10; 0; 0; 1; 0; 0; 1]
match input with
| label::data ->
let body = data |> List.map string |> String.concat " "
printf "|y %d |x %s" label body
| _ ->
failwith "Label is missing!"
如果要将数据写入文件,可以使用sprintf
(返回字符串)而不是printf
。如果你的数据非常大,最好逐个编写数字,而不是在内存中连接一个大字符串,但这个想法是一样的。