cas*_*ret 4 object compiler-warnings kotlin
试图弄清楚为什么我在此代码中得到警告。
object Test {
val bar = true
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return foo()
}
}
fun main(args: Array<String>) {
println(Test {bar})
}
Run Code Online (Sandbox Code Playgroud)
编译时得到这个
test.kt:5:12:警告:表达式未使用
返回foo()
但它肯定似乎已被使用,因为您true在运行它时确实会得到它。
foo()显式调用this将使警告消失:
第一种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return this.foo()
}
Run Code Online (Sandbox Code Playgroud)
第二种方式:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
return foo(this)
}
Run Code Online (Sandbox Code Playgroud)
由于您应该可以this在这种情况下忽略,所以我猜这是编译器中的错误。
如果只想警告消失,则可以@Suppress在语句级别使用注释:
operator fun invoke(foo: Test.() -> Boolean): Boolean {
@Suppress("UNUSED_EXPRESSION")
return foo()
}
Run Code Online (Sandbox Code Playgroud)
您可以对整个文件,整个类或整个函数执行此操作,但是最好直接在语句中使用它,因为其他未使用的表达式确实可能是您(而非故意)和编译器的错误那不会告诉你的
| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |