首页 > 解决方案 > 如何在 Kotlin 中简化这一点

问题描述

在 Kotlin 中是否有更短的方法来编写以下代码:

private fun getMonth(monthText: String): Int {
    var x = arrayOf("january", "february", "jumper").indexOf(monthText)

    if (x >= 0)
        return x

    x = arrayOf("Januari", "Februari", "Maret").indexOf(monthText)

    if (x >= 0)
        return x

    throw Exception("Not found")

}

我必须重复数组搜索多种语言,并希望避免重复重复代码。注意:返回值必须表示月份。

标签: kotlin

解决方案


出于性能原因,您应该更好地散列而不是搜索

private val monthByName = mapOf(
    "january" to 0,
    "february" to 1,
    "jumper" to 2,
    "Januari" to 0,
    "Februari" to 1,
    "Maret" to 2
)

private fun getMonth(monthText: String) = monthByName[monthText] ?: throw NoSuchElementException(monthText)

推荐阅读