代码之家  ›  专栏  ›  技术社区  ›  David 天宇 Wong

在OCaml中,如何在保持变量名的同时匹配函数参数

  •  0
  • David 天宇 Wong  · 技术社区  · 3 年前

    我有一些代码:

    let some_func some_arg = (* ... *)
    

    哪里 some_arg 真的需要 [| arg1; arg2 |] . 我想在函数参数位置进行模式匹配,如:

    let some_func [| arg1; arg2 |] = (* ... *)
    

    一些 以防我想直接用它做点什么。我该怎么做?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Jeffrey Scofield    3 年前

    函数参数是模式,因此可以使用 as 构造以命名图案的部分(或全部):

    let some_func ([| arg1; arg2 |] as some_arg) = (* . . . *)
    

    使用一个 match 因此,当数组长度不是2时,可以指定所需的行为。或者,您可以使用始终只有两个组件的类型(例如元组)。