gpt4 book ai didi

f# - 将数组提供给 printfn

转载 作者:行者123 更新时间:2023-12-04 16:51:07 26 4
gpt4 key购买 nike

我正在打印一个井字游戏板。我有一个用于电路板每个单元格的字符数组和一个用于电路板的格式字符串。我目前正在做:

let cells = [| 'X'; 'O'; 'X'; 'O'; 'X'; 'O'; ' '; ' '; ' ' |]
printfn ".===.===.===.\n\
| %c | %c | %c |\n\
.===.===.===.\n\
| %c | %c | %c |\n\
.===.===.===.\n\
| %c | %c | %c |\n\
.===.===.===.\n" cells.[0] cells.[1] cells.[2] cells.[3] cells.[4] cells.[5] cells.[6] cells.[7] cells.[8]

有没有办法将单元格数组提供给 printfn 而不显式枚举数组中的所有 9 个项目?我可以以某种方式使用 Array.fold 或 kprintf 吗?

最佳答案

Funk 的回答相当不错,但我认为您可以通过引入 join 使其更简单函数将元素(单个单元格或行)与它们之间和周围的分隔符连接起来。

let join s arr = sprintf "%s%s%s" s (String.concat s arr) s

然后你可以这样做:
cells
|> Seq.chunkBySize 3
|> Seq.map (Seq.map (sprintf " %c ") >> join "|")
|> Seq.map (fun s -> s + "\n")
|> join ".===.===.===.\n"
|> printfn "%s"

关于f# - 将数组提供给 printfn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com