【问题标题】:Get element from a type ocaml从 ocaml 类型中获取元素
【发布时间】:2018-10-23 14:18:43
【问题描述】:

刚接触 Ocaml,所以问了一个非常基本的问题。

如果我有一个类型,比如 type foobar = foo * bar 和一个 foobar 类型的变量 a。是否可以使用方法从 a 中获取 foo 的值?除了模式匹配还有其他方法吗?另外,在这种情况下,您将如何应用模式匹配?由于声明的类型没有声明为type foobar = | Foobar of foo * bar?

【问题讨论】:

    标签: ocaml


    【解决方案1】:

    你可以像这样匹配一对:

    # 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 的重要组成部分,而不仅仅是一个花哨的可选功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多