使用 OCaml 警告属性禁用警告 8:不完全匹配
Use OCaml warning attribute to disable warning 8: unexhaustive match
我正在尝试编写类似于以下的代码:
let [a; b] =
(* body *)
[1; 2]
而且我只想针对模式 [a; b]
而不是正文或 let 之外的任何内容禁用警告 #8。我试图将警告属性设置为禁用警告,但是 none 以下工作:
let[@warning "-8"] [a[@warning "-8"];b[@warning "-8"]] [@warning "-8"] =
[1;2][@warning "-8"]
[@@ocaml.warning "-8"]
P.S。我并不是真的在写这段代码,而是在试验一个自定义的 PPX 预处理器。所以一个复杂但有效的例子是可以接受的。
4.06.0 之前的 OCaml 版本不支持使用 [@warning "…"]
和 [@@warning "…"]
本地禁用警告。对于这样的版本,一种可能是使用封闭 [@@@warning ""]
属性:
[@@@warning "-8"]
let [a;b] = [1;2]
[@@@warning "+8"]
但这也会停用体内的警告。
如果您正在生成代码并且统计地知道列表的大小,另一种选择可能是使用元组进行绑定(又名 let (a,b)= …
)?
我正在尝试编写类似于以下的代码:
let [a; b] =
(* body *)
[1; 2]
而且我只想针对模式 [a; b]
而不是正文或 let 之外的任何内容禁用警告 #8。我试图将警告属性设置为禁用警告,但是 none 以下工作:
let[@warning "-8"] [a[@warning "-8"];b[@warning "-8"]] [@warning "-8"] =
[1;2][@warning "-8"]
[@@ocaml.warning "-8"]
P.S。我并不是真的在写这段代码,而是在试验一个自定义的 PPX 预处理器。所以一个复杂但有效的例子是可以接受的。
4.06.0 之前的 OCaml 版本不支持使用 [@warning "…"]
和 [@@warning "…"]
本地禁用警告。对于这样的版本,一种可能是使用封闭 [@@@warning ""]
属性:
[@@@warning "-8"]
let [a;b] = [1;2]
[@@@warning "+8"]
但这也会停用体内的警告。
如果您正在生成代码并且统计地知道列表的大小,另一种选择可能是使用元组进行绑定(又名 let (a,b)= …
)?