在ocaml中使用以下类型定义:
type yearday = YMD of int * int * int
Run Code Online (Sandbox Code Playgroud)
你将如何访问该类型的不同的int?就像我只想要第一个int的值一样.
像这样的值的部分可以通过模式匹配来访问.这是一个返回第一个int的函数:
let y_of_ymd (YMD (y, _, _)) = y
Run Code Online (Sandbox Code Playgroud)
以下是它在顶层中的外观(OCaml REPL):
# let y_of_ymd (YMD (y, _, _)) = y;;
val y_of_ymd : yearday -> int = <fun>
# let myymd = YMD (2017, 4, 18);;
val myymd : yearday = YMD (2017, 4, 18)
# y_of_ymd myymd;;
- : int = 2017
#
Run Code Online (Sandbox Code Playgroud)
更新
如果您的类型中有多个变体,则可以使用它match来确定存在哪种值
type yearday = YMD of int * int * int | YD of int * int
let y_of_yearday yearday =
match yearday with
| YMD (y, _, _) -> y
| YD (y, _) -> y
Run Code Online (Sandbox Code Playgroud)
有更简洁的方法来写这个,但我认为这可以最好地了解正在发生的事情.