在OCaml中,如何在保持变量名的同时对函数参数进行模式匹配



我有一些代码:

let some_func some_arg = (* ... *)

其中CCD_ 1确实需要是CCD_。我想在函数参数的位置进行模式匹配,比如:

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

但我也想保留变量名some_arg,以防我想直接使用它。我该怎么做?

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

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

然而,这种模式并不详尽,因为它只匹配长度为2的数组。因此,这是一个脆弱的函数定义,编译器会发出警告。

最好只使用match,这样当数组的长度不是2时,就可以指定所需的行为。或者,您可以使用总是正好有2个组件的类型(例如元组(。

最新更新