首页 > 解决方案 > 简化此代码示例以减少行数

问题描述

Kotlin 中是否有更简洁的方法来减少此示例中的代码行数:

    // A qualifier will always be provided and one of the
    // when selections will be chosen.

    when (qualifier) {
        QualifierConfiguration.MCCAndMNC -> {
            if (composableResource.mcc == null) {
                resources.removeAt(index)
                return true
            }
        }
        QualifierConfiguration.LanguageAndRegion -> {
            if (composableResource.languageAndRegion == null) {
                resources.removeAt(index)
                return true
            }
        }
        QualifierConfiguration.LayoutDirection -> {
            if (composableResource.layoutDirection == null) {
                resources.removeAt(index)
                return true
            }
        }
    }

    return false

我只展示了 3 个项目。在实际代码中还有很多,我想避免重复类似的代码行。删除换行符不是我考虑减少行数的方法。寻找更多的模式。

标签: kotlin

解决方案


您可以使用范围函数。

在你的时候,只需返回可组合资源。使用守卫 let (?let) 可以确保您有一个非空的可组合资源,因此您可以进行任何您想要的处理

在运行中,您处于您的 composableResource 为空的范围内。所以在这里,您可以删除您的资源并返回 true。

它略微减少了行数,并且您摆脱了代码重复(removeAt + return true)。

when (qualifier) {
        QualifierConfiguration.MCCAndMNC -> 
            composableResource.mcc
        QualifierConfiguration.LanguageAndRegion -> 
            composableResource.languageAndRegion
        QualifierConfiguration.LayoutDirection -> 
            composableResource.layoutDirection
    }
    ?.let {
        false
    }
    ?: run {
        resources.removeAt(index)
        true
    }


推荐阅读