有问题的代码如下:
fun get(context: Context, s: String): MyObjectDb? {
return context.database.use {
return@use select(MyObjectDb.TABLE_NAME, *MyObjectDb.PROJECTION)
.whereArgs("${MyObjectDb.COLUMN_S} = {s}", "s" to s)
.exec {
return@exec getOne(MyObjectDb::fromCursor)
}
}
}
当我检查这个代码样式时(使用schkt的Kotlin插件的声纳)我得到一个警告,我应该"限制方法中返回语句的数量。"
有没有办法只返回@ exec或以更多的Kotlinized方式编写代码 - 没有那么多的返回。
答案 0 :(得分:3)
当lambda只包含一个表达式时,可以省略return
。由于您的函数也只包含一个表达式,因此您可以在=
之后编写函数体以省略返回值。因此,您可以将代码缩短为:
fun get(context: Context, s: String): MyObjectDb? = context.database.use {
select(MyObjectDb.TABLE_NAME, *MyObjectDb.PROJECTION)
.whereArgs("${MyObjectDb.COLUMN_S} = {s}", "s" to s)
.exec { getOne(MyObjectDb::fromCursor) }
}