微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不推荐使用视图边界;改用隐式参数

如何解决不推荐使用视图边界;改用隐式参数

我最近升级到了 Scala 2.13,现在我收到了有关弃用的警告。我的函数看起来像这样:

implicit def convertGeneralResult[A <% ToResponseMarshallable,B <% ToResponseMarshallable](r: Either[A,B]) =
  r.fold[ToResponseMarshallable](identity,identity)

弃用警告内容(我实际上有两个,每个类型参数 A/B 一个):

不推荐使用视图边界;改用隐式参数。
示例:代替 def f[A <% Int](a: A) 使用 def f[A](a: A)(implicit ev: A => Int)

我不完全确定如何在我的情况下应用建议的修复。

解决方法

这个问题有很多深度,但我只会给出一些参考,以防你想深入研究它,以及如何解决它。

早在 2013 年,在 Scala 2.11 中,您就可以在 Scala 中找到一个名为 deprecation warning for view bounds under -Xfuture 的错误。在 this was implemented 时,但如果您没有在 SCALA COMPILER OPTIONS 中使用 -Xfuture 选项,那么您不会意识到这一点。

在 2018 年 Deprecate view bounds without -Xfuture 已开放,正如您所注意到的那样。

作为另一个参考,有一个类似的问题 was merged into Scala 2.13

现在解决您的问题。您需要做的就是删除 <% 用法,并将其替换为隐式:

implicit def convertGeneralResult[A,B](r: Either[A,B])(implicit aToMarshallable: A => ToResponseMarshallable,bToMarshallable: B => ToResponseMarshallable) =
  r.fold[ToResponseMarshallable](identity,identity)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。