试图弄清楚为什么我在这段代码中收到警告。
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/