kotlin - 如何在 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")
}
我必须重复数组搜索多种语言,并希望避免重复重复代码。注意:返回值必须表示月份。
解决方案
出于性能原因,您应该更好地散列而不是搜索
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)
推荐阅读
- json - ansible任务中的多行json字符串
- python - List of NAN values while calculating p value and Z score in Scipy
- java - 在递归java中写入文件
- amazon-web-services - 用于按日期顺序检索视频/照片内容的 AWS DynamoDB 表
- c# - How to detect Control + not VirtualKey keyboard combinations?
- android - How to remove a specific jar file from libs folder while packaging application in Android
- javascript - How to Create New Object from Matching Object Properties?
- java - Java EE CDI - 每次调用方法时获取类的新实例
- firebase - How to exclude certain data from Firestore query
- dynamics-365 - Error publishing "hello world" Microsoft AL app to Dynamics 365 sandbox