繁体   English   中英

警告:无法访问代码,未使用等于 Kotlin 中的表达式

[英]Warning: Unreachable code, Unused equals expression in Kotlin

这是我的代码,我不喜欢警告。 currentFlag.inc()发出警告:无法访问的代码,if(currentFlag == 1) 发出警告:未使用的等于表达式

private fun processGather() {
        TODO("process Gather implemented")
        currentFlag.inc() 

        if (currentFlag == 1) { 
            this.binding.ivStep1.setImageDrawable(AppCompatResources.getDrawable(this, R.drawable.step2))
        } 
    }

您可能误用了TODO TODO这样做:

总是抛出 NotImplementedError 说明操作未实现。

它旨在用作您尚未实现的函数的占位符返回值。 在您的情况下, // TODO注释似乎更合适。

如果您确实打算在那里抛出NotImplementedError ,并且仍想使警告静音,则可以将Suppress注释应用于文件或周围的方法:

@file:Suppress("UNREACHABLE_CODE", "UnusedEquals")
// or
@Suppress("UNREACHABLE_CODE", "UnusedEquals")
private fun processGather() {

注意TODO的返回类型是Nothing ,这告诉编译器它永远不会返回(它总是会抛出异常)。 正因为如此,可以分析出, TODO调用之后的一切都不会被执行。 因此,“无法访问的代码”。

可能是因为这个无法访问的代码,它也会触发“未使用的相等表达式”检查,原因是“因为它无法访问,所以它没有被使用”。 这也可能是无意的,因为在我看来,只有无法访问的代码检查应该触发。

TODO 方法总是会抛出 NotImplemented 错误。 由于 TODO 是您方法中的第一行,因此执行永远无法到达 TODO 方法调用下面的后续行。 与 JAVA(导致编译错误的地方)不同,在 kotlin 中,无法访问的代码将在编译时导致警告。 为避免这种情况,只需在 TODO 方法调用下方注释代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM