Scala 如何解决价值丢弃或未使用警告的问题

Scala 如何解决价值丢弃或未使用警告的问题,scala,compiler-warnings,compiler-options,Scala,Compiler Warnings,Compiler Options,而建议通过使用显式或隐式地打开编译器标志,如-Wvalue discard或-Wunused:implicits 有时你需要围绕这些问题展开工作,但要以一种明确的方式进行;因为我们通常会考虑这样的错误,这就是首先使用编译器标志的原因。 这些情况下的一个比较常见的工作区是以下void函数(由Rob Norris提供) @inline final def void(args:Any*):Unit=(args,())。\u 2 然而,这种功能有两个问题 它有一些不必要的额外拨款;即varargs和T

而建议通过使用显式或隐式地打开编译器标志,如
-Wvalue discard
-Wunused:implicits

有时你需要围绕这些问题展开工作,但要以一种明确的方式进行;因为我们通常会考虑这样的错误,这就是首先使用编译器标志的原因。 这些情况下的一个比较常见的工作区是以下
void
函数(由Rob Norris提供)

@inline final def void(args:Any*):Unit=(args,())。\u 2
然而,这种功能有两个问题

  • 它有一些不必要的额外拨款;即varargs和Tuple的Seq
  • 它不是stdlib的一部分,在所有项目中添加它有点乏味
  • 还有其他现成的好方法吗?

    2.13 由于Scala
    2.13
    有两种方法可以禁用这两种警告

  • 将值分配给不存在的变量:
  • def testFix1()(隐式i:Int):单位={
    val_uui=i
    val=数据
    }
    
  • 键入ascript将表达式写入单元
  • def testFix2()(隐式i:Int):单位={
    i:单位
    数据:单位
    }
    
    我们没有正式的参考或证据,但相信第二种选择应该是透明的;在某种意义上,它不应该在运行时产生任何影响,比如额外的分配或不需要的代码生成


    您可以看到代码正在运行


    3 据我们所知,同样的技巧应该适用于Scala 3(也称为Dotty)

    2.12
    ??

    为什么不使用
    @nowarn
    (2.13)或(2.12)来抑制警告?作为
    void
    -@ghik的替代方案,我将答案设置为社区wiki,因此可以在那里随意添加:)