Ocaml如何访问类型定义中的元素

时间:2017-04-19 04:20:00

标签: ocaml

在ocaml中使用以下类型定义:

type yearday = YMD of int * int * int 

您将如何访问该类型的不同整数?就像我只想要第一个int的值。

1 个答案:

答案 0 :(得分:5)

通过模式匹配访问这样的值的部分。这是一个返回第一个int的函数:

let y_of_ymd (YMD (y, _, _)) = y

以下是它在toplevel(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
#

<强>更新

如果您的类型中有多个变体,则可以使用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

有更简洁的方法来写这个,但我认为这可以最好地了解正在发生的事情。