F# 格式化带有列表切片的字符串

F# formatting string with list slices

我有一个表示标签和一系列数据值的列表,如下所示:(包含更多元素)

[10; 0; 0; 1; 0; 0; 1]

我想把它写到这样的文件中:

|y 10 |x 0 0 1 0 0 1

完成此格式化的最简单方法是什么?

您可以使用模式匹配来分隔列表的第一个元素:

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(其中returns一个字符串)而不是printf。如果你的数据很大,最好一个一个地写数字,而不是在内存中连接一个大字符串,但想法是一样的。