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

问题描述

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

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

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

解决方法

您可能滥用了 TODOTODO 这样做:

总是抛出 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 方法调用下面注释代码