Vla*_*hev 4 attributes warnings ocaml
我正在尝试编写类似于以下内容的代码:
let [a; b] =
(* body *)
[1; 2]
Run Code Online (Sandbox Code Playgroud)
我想仅针对模式禁用警告 #8 [a; b],而不是针对正文或 let 之外的任何内容。我尝试设置警告属性来禁用警告,但以下方法都不起作用:
let[@warning "-8"] [a[@warning "-8"];b[@warning "-8"]] [@warning "-8"] =
[1;2][@warning "-8"]
[@@ocaml.warning "-8"]
Run Code Online (Sandbox Code Playgroud)
PS 我并不是真的在编写这段代码,而是正在尝试使用自定义 PPX 预处理器。因此,一个复杂但有效的示例是可以接受的。
4.06.0 之前的 OCaml 版本不太支持使用[@warning "\xe2\x80\xa6"]和本地禁用警告。[@@warning "\xe2\x80\xa6"]对于这样的版本,一种可能性可能是使用封闭[@@@warning ""]属性:
[@@@warning "-8"]\nlet [a;b] = [1;2]\n[@@@warning "+8"]\nRun Code Online (Sandbox Code Playgroud)\n\n但这也会使体内的警告失效。
\n\n如果您正在生成代码并且统计地知道列表的大小,另一个选择可能是使用元组进行绑定(又名let (a,b)= \xe2\x80\xa6)?