如何从列表中访问类型中的值

How to access a value in type from a list

这是我项目的结构

type A{
t1;
t2;
}

and B = var of A
and C = B list
type D = C list

现在我有了一个只有 D 作为参数的函数。每次调用此函数时,我都需要为 t2 分配一个唯一值。

我想我不能直接给 t2 赋值,相反我需要 return 一个新类型和一个新值 t2。我认为这就是函数式语言的工作方式

我的问题是我不知道如何使用这个函数访问这个值

我还在学习语法,如果有人能给我一个例子,那就太好了

你的问题一点都不清楚。

如果您希望 a 成为可以更改其中一个字段的记录,则可以使用关键字 mutable。 如果您有 type a = { t1 : int ; mutable t2 : int },那么如果 x 是类型 a 的值,您可以使用语法 x.t2 <- 9 例如。

如果我没理解错的话,你想做的是:

type a = { t1 : int ; mutable t2 : int }
type b = Var of a
type c = b list
type d = c list

let func d =
  List.iter (fun c -> List.iter (function (Var a) -> a.t2 <- a.t2 + 1) c) d

可以重写(通过 eta 转换)

let func = List.iter (List.iter (function (Var a) -> a.t2 <- a.t2 + 1))

此函数将遍历您的 d = c list 中的每个 c,并且对于它们中的每一个,将遍历所有 b,它只是 Var a 它修改 t2.