object - 我如何摆脱这个 'warning: the expression is unused' 警告?

标签 object kotlin compiler-warnings

试图弄清楚为什么我在这段代码中收到警告。

object Test {
  val bar = true

  operator fun invoke(foo: Test.() -> Boolean): Boolean {
    return foo()
  }
}

fun main(args: Array<String>) {
  println(Test {bar})
}

编译时得到这个

test.kt:5:12: warning: the expression is unused
return foo()



但它似乎确实被使用了,因为你确实得到了 true当你运行它时。

最佳答案

调用 foo()明确在 this将使警告消失:

第一种方式:

operator fun invoke(foo: Test.() -> Boolean): Boolean {
    return this.foo()
}

第二种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
    return foo(this)
}

因为你应该可以省略 this在这种情况下,我猜这是编译器中的一个错误。

如果你只是想让警告消失,你可以使用 @Suppress语句级别的注释:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
    @Suppress("UNUSED_EXPRESSION")
    return foo()
}

您也可以对整个文件、整个类或整个函数执行此操作,但最好直接在语句中使用它,因为其他未使用的表达式可能确实是您(而非故意)和编译器的错误那时不会告诉你这件事。

关于object - 我如何摆脱这个 'warning: the expression is unused' 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336836/

相关文章:

JavaScript : Rearrange array elements according to the absolute difference with x

android - 调用 HTTP 请求时,Toast 未显示在登录流程中

kotlin - Kotlin + let方法+此关键字

gcc - 如何抑制警告 "gets() is deprecated"?

c - 转换未更改值时发出警告

c++ - 如何在CMake中为 native 代码和外部代码设置不同的编译器警告级别

javascript - 将数组动态映射到嵌套对象

使用 'new' 关键字创建 JavaScript 对象

javascript - 嵌套对象的键是否存储在对象中?

kotlin - 从 “for”循环中的列表中取出随机项目