gpt4 book ai didi

scala - 如何解决未使用警告的值(value)丢弃

转载 作者:行者123 更新时间:2023-12-04 15:12:43 26 4
gpt4 key购买 nike

虽然建议打开编译器标志,如 -Wvalue-discard-Wunused:implicits通过使用 sbt-tpolecat 显式或隐式地.
有时您需要解决这些问题,但要以一种明确的方式;因为我们通常认为这些事情是错误的,这就是首先使用编译器标志的原因。
对于这些情况,一种比较常见的解决方法是以下 void函数(由 Rob Norris 提供)。

@inline final def void(args: Any*): Unit = (args, ())._2
然而,这样的功能有两个问题。
  • 它有一些不必要的额外分配;即 序列 用于可变参数和 元组 .
  • 它不是 stdlib 的一部分,将它添加到所有项目中有点乏味。

  • 有没有其他好的工作方法可以开箱即用?

    最佳答案

    2.13
    斯卡拉 2.13有两种方法可以禁用这两个警告。

  • 将值分配给不存在的变量:

  • def testFix1()(implicit i: Int): Unit = {
    val _ = i
    val _ = data
    }
  • 将表达式输入到 单位 :

  • def testFix2()(implicit i: Int): Unit = {
    i : Unit
    data : Unit
    }
    我们没有正式的引用或证明,但认为第二种选择应该是透明的;从某种意义上说,它不应该对运行时产生任何影响,例如额外的分配或不需要的代码生成。

    可以看到运行的代码 here .

    3.0
    据我们所知,同样的技巧应该适用于 斯卡拉 3 (又名 Dotty )。
    2.12
    ???

    关于scala - 如何解决未使用警告的值(value)丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64921914/

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