Types 获取OCaml类型的内部值
我最近才开始编写OCaml代码,因此这可能是一个幼稚的问题,但我自己却无法理解 我在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中,我们经常使用模式匹配来分解和
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问题,以获得指导。谢谢!这节省了很多时间!