我正在尝试在代码中获取类型的值。有一个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替换为某些代码,但不知道该怎么做。
答案 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