Types 获取OCaml类型的内部值

Types 获取OCaml类型的内部值,types,ocaml,Types,Ocaml,我最近才开始编写OCaml代码,因此这可能是一个幼稚的问题,但我自己却无法理解 我在OCaml中有以下类型声明 type myType = | Int of int 现在我有一个myType类型的对象 有没有办法访问此对象所持有的int值?如果是,如何访问?您可以使用模式匹配访问值: match value_of_my_type with | Int i -> do_something_with i 您需要的是从联合类型的值中获取int值。在OCaml中,我们经常使用模式匹配来分解和

我最近才开始编写OCaml代码,因此这可能是一个幼稚的问题,但我自己却无法理解

我在OCaml中有以下类型声明

type myType =
| Int of int 
现在我有一个myType类型的对象


有没有办法访问此对象所持有的int值?如果是,如何访问?

您可以使用模式匹配访问值:

match value_of_my_type with
| Int i -> do_something_with i

您需要的是从联合类型的值中获取
int
值。在OCaml中,我们经常使用模式匹配来分解和转换值:

let get_int v = 
    match v with 
    | Int i -> i
在OCaml顶级中尝试该函数时,您会得到如下结果:

# let v = Int 3;;
val v : myType = Int 3
# get_int v;;
- : int = 3
如果您的联合类型有更多案例,只需向
get_int
函数添加更多模式,并以适当的方式处理它们

对于像您的示例这样的单例联合,您可以直接对其值进行模式匹配:

# let (Int i) = v in i;;
- : int = 3

顺便说一句,
对象
在本文中不是正确的术语。我想你应该说myType的
。OCaml允许OOP,对象是另一个实体的术语。但物体也是价值观。如果你的教材没有在显眼的地方给出这个问题的答案,你需要更好的材料。请看一下这个StackOverflow问题,以获得指导。谢谢!这节省了很多时间!