gpt4 book ai didi

printing - 如何在 Ocaml 中打印以另一种类型包装的内容的字符串值?

转载 作者:行者123 更新时间:2023-12-04 06:27:18 24 4
gpt4 key购买 nike

我正在尝试使用 Printf.sprintf 打印出多个选项类型中的值

    type tid = int

type lock = string

type rdwrlock =
| Rdlock of lock
| Wrlock of lock

type rdwrlockid = rdwrlock * tid

基本上,我想打印出一个“rdwrlockid”,即 (rdwrlock*tid),我可以使用 printf 中的 %d 选项轻松打印出“tid”,但是如何访问 rdwrlock 中的锁内的字符串?

最佳答案

坚持你的例子,它可以按如下方式完成:

let y, z = (Rdlock "a", 1) in
Printf.printf "%d %s\n" z (match y with Rdlock r -> r | Wrlock w -> w)

可以稍微简化一下:
type lck = READ | WRITE
type lckid = lck * tid

let k, i = (READ, 1) in
Printf.printf "%d %s\n" i (match k with READ -> "R" | WRITE -> "W");

或者,如果您确实需要 lock 的字符串表示通常,您可以编写一个辅助函数:
let string_of_lock k =
match k with
| READ -> "R"
| WRITE -> "W"

然后在 printf 中使用它:
Printf.printf "%d %s\n" i (string_of_lock k)

关于printing - 如何在 Ocaml 中打印以另一种类型包装的内容的字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894005/

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