我如何摆脱这个 'warning: the expression is unused' 警告?
How do I get rid of this 'warning: the expression is unused' warning?
正在尝试找出我在此代码中收到警告的原因。
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
。
在 this
上显式调用 foo()
将使警告消失:
第一种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return this.foo()
}
第二种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return foo(this)
}
由于在这种情况下您应该可以省略 this
,我猜这是编译器中的一个错误。
如果只是想让warning消失,可以在语句级别使用@Suppress
注解:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
@Suppress("UNUSED_EXPRESSION")
return foo()
}
你可以对整个文件、整个 class 或整个函数都这样做,但最好直接在语句中使用它,因为其他未使用的表达式可能真的是你的错误(而不是故意的)然后编译器不会告诉你。
您确定的这个误报是 Kotlin 中的一个已知问题 KT-21282, so you can either apply one of 或者等待 JetBrains 修复该错误。
正在尝试找出我在此代码中收到警告的原因。
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
。
在 this
上显式调用 foo()
将使警告消失:
第一种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return this.foo()
}
第二种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return foo(this)
}
由于在这种情况下您应该可以省略 this
,我猜这是编译器中的一个错误。
如果只是想让warning消失,可以在语句级别使用@Suppress
注解:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
@Suppress("UNUSED_EXPRESSION")
return foo()
}
你可以对整个文件、整个 class 或整个函数都这样做,但最好直接在语句中使用它,因为其他未使用的表达式可能真的是你的错误(而不是故意的)然后编译器不会告诉你。
您确定的这个误报是 Kotlin 中的一个已知问题 KT-21282, so you can either apply one of