我查看了手册,发现OCaml中有一些属性用于声明已弃用的内容(请参阅http://caml.inria.fr/pub/docs/manual-ocaml/extn.html),但我无法弄清楚如何让它们被编译器识别。
这是我写的程序:
let x = 1 [@@ocaml.deprecated "don't use this"]
type t = X | Y [@@ocaml.deprecated "don't use this"]
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false
(我也尝试了[@@deprecated ...]
而不是[@@ocaml.deprecated ...]
,结果相同)。我跑的时候没有收到任何警告:
ocamlbuild src/trial.byte
我的_tags
文件中是否需要设置一些内容?还有其他我在这里缺少的东西吗?
答案 0 :(得分:3)
不推荐使用的注释仅适用于值(不适用于类型),主要适用于签名。在你的情况下,在这里应该如何做:
module M : sig
val x : int [@@deprecated "don't use this"]
type t =
| X [@deprecated "don't use this"]
| Y [@deprecated "don't use this"]
end = struct
let x = 1
type t = X | Y
end
open M
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false
答案 1 :(得分:1)
在代码之前,对于此版本#require "ppx_jane";;
,似乎从4.02.3开始工作。使用4.03.0,它本地工作。