OCaml:用消息断言

哈哈 阅读:146 2025-02-15 21:57:57 评论:0

又是另一个问题 :P 我不太确定是应该将它张贴在这里还是在 OCaml 邮件列表上,但我先尝试 SO。

我喜欢断言语句。但是,我发现错误消息在没有附加消息的情况下几乎毫无用处(第 XXX 行的断言违规 --- 很好,但实际上出了什么问题?)。 我认为断言的好例子是 pythonic assert x > 0, "X must be greater than zero for the algorithm X to work" 而坏的例子是 C-like assert( x>0).

得知在 OCaml 中无法将错误消息附加到断言,我感到非常失望 =( 我的选择是:

  • 写一个自定义函数,比如说 vassert => 但我不会得到只有 assert 关键字才有可能的神奇行号
  • 使用 failwith,但它相当冗长,我认为它会遇到与自定义函数相同的问题。
  • 使用 OUnit 中的函数,但我不想引入不必要的依赖。

有没有人遇到同样的问题?人们使用什么?

请您参考如下方法:

有点乏味但工作正常:

 assert (if not cond then print_endline "your message"; cond) 


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号