OCaml中对函数参数做模式匹配时如何保留原变量名
解决方案
在OCaml中可以使用模式匹配的as关键字同时完成结构解构和整体变量绑定,写法如下:
let some_func ([| arg1; arg2 |] as some_arg) = (* 你的函数逻辑 *)
- 这里
[| arg1; arg2 |]会把传入的数组解构成两个单独的变量arg1和arg2供你直接使用 as some_arg会把传入的整个数组绑定到变量some_arg上,你可以在函数体内直接使用整个数组值
注意事项
- 这种写法默认假定你传入的参数一定是长度为2的数组,如果传入其他长度的数组会触发运行时匹配错误,同时编译阶段会给出非穷尽匹配的警告
- 如果你需要兼容任意长度的数组,可以在函数内部用
match with做全情况匹配:
let some_func some_arg = match some_arg with | [| arg1; arg2 |] -> (* 长度为2的逻辑 *) | _ -> (* 其他情况的兜底逻辑 *)
内容的提问来源于stack exchange,提问作者David 天宇 Wong
相关产品推荐
相关产品推荐

