如何获取类型的值

时间:2019-01-24 04:41:50

标签: ocaml

我正在尝试在代码中获取类型的值。有一个x是stmt,值是(“ x” 1)。 我想获取该“ x”并将其用作在哈希表中查找值的键。 我要问的是如何提取“ x”。

type variable = string
type expr = int
type arrayref = variable * expr
type stmt = Dim of arrayref
let x = Dim("x",1);;

let aa (sbc:stmt) = match sbc with
|Dim a -> None;;

我应该将None替换为某些代码,但不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

我不确定,但是我想您是在问如何访问复合值的组成部分。对于元组和变体,方法是使用模式匹配。所以你有权利。您只需要使模式更深即可。要从值"x"中获取x,您需要执行以下操作:

let extracted_value =
    match x with
    | Dim (k, _) -> k
in
. . .

由于您的stmt类型中只有一个构造函数(至少现在是这样),因此您可以按照以下步骤进行操作而无需匹配:

let Dim (extracted_value, _) = x in
. . .

之所以有用,是因为有一个完整的模式。对于具有更多构造函数的类型,您需要使用match处理所有可能性。

如果这不是您要的内容,请尝试以其他方式再次询问。

更新

要打印字符串,您可以这样写:

let Dim (k, _) = x in print_string k