首页 文章

从类型ocaml中获取元素

提问于
浏览
1

Ocaml的新手,所以问一个非常基本的问题 .

如果我有一个类型说 type foobar = foo * bar 和foobar类型的变量 a . 是否可以通过方法获得foo的值?除了模式匹配还有其他方法吗?此外,在这种情况下,您将如何应用模式匹配?由于声明的类型未声明为 type foobar = | Foobar of foo * bar

1 回答

  • 2

    你可以匹配这样一对:

    # type intfloat = int * float;;
    type intfloat = int * float
    # let x : intfloat = (3, 5.5);;
    val x : intfloat = (3, 5.5)
    # let (int_part, _) = x in int_part;;
    - : int = 3
    # let (_, float_part) = x in float_part;;
    - : float = 5.5
    

    有一个函数(不是方法) fst 返回一对的第一个元素 .

    # fst x;;
    - : int = 3
    

    但是, fst 的定义必然使用模式匹配:

    let fst (a, b) = a
    

    在此定义中,构造 (a, b) 是匹配一对的模式 .

    模式匹配是OCaml的重要组成部分,而不仅仅是一个奇特的可选功能 .

相关问题