gpt4 book ai didi

scala - 我可以强制 Scala 在不详尽的比赛中出错吗?

转载 作者:行者123 更新时间:2023-12-02 00:07:21 26 4
gpt4 key购买 nike

一个不穷尽的匹配,例如

def foo[A](t: Seq[A]) = t match {
Seq(x) => x
}

经常(不总是,但通常)是我的一个错误,它会在运行时崩溃。 Scala 发出警告,但在增量构建中,该文件可能已经编译,所以我会错过警告。

有没有办法,全局或局部,也许通过注释,强制 Scala 将警告转换为错误?

最佳答案

可以提供一个自定义报告器来任意将警告报告为错误(或相反),但 API 当前是基于字符串的,因此它将过滤字符串消息而不是类型的警告。

没有内置的方法可以使特定警告失败,但是 -Xlint -Xfatal-warnings是升级警告的常用方法。

警告抑制已被请求,但被认为是危险的。对于致命警告,要求是抑制被认为是良性的警告。

如果您有剩余的弃用,则可以通过从不推荐使用的方法调用它来抑制警告(在 -Xfatal-warnings 下会失败);如果该方法是本地方法,则不会生成警告。

scala> @deprecated("","") def f = 8
f: Int

scala> f
<console>:9: warning: method f is deprecated:
f
^
scala> object A {
| def a = {
| @deprecated("","") def _f = f
| _f
| }}
defined object A

scala> A.a
res1: Int = 8

本地弃用技巧本身已被弃用,但您仍然可以使用转发伴侣:
scala> @deprecated("","") def f = 8
f: Int

scala> f
warning: there was one deprecation warning; re-run with -deprecation for details
res0: Int = 8

scala> @deprecated("","") class C { def g = f }; object C extends C
defined class C
defined object C

scala> C.g
res1: Int = 8

关于scala - 我可以强制 Scala 在不详尽的比赛中出错吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com