Hel*_*oCW 7 android kotlin anko
以下代码来自"Kotlin for Android Developers",您可以访问https://github.com/antoniolg/Kotlin-for-Android-Developers
为了插入行数据CityForecastTable.NAME,我必须vararg通过源代码传递值 fun SQLiteDatabase.insert
1: 作者做了一个扩展toVarargArray()转换MutableMap<String, Any?>为Pair<String, Any?>,我不知道是否有更好的方法来做到这一点.我需要使用扩展功能吗?
2: 作者必须使用it.value!!代码C中的代码,我不知道代码fun <K, V : Any> Map<K, V?>.toVarargArray(): Array<out Pair<K, V?>> = map({ Pair(it.key, it.value) }).toTypedArray()是否正确?
3:当我插入列包含空值的行数据时,我不知道应用程序是否会崩溃.
import org.jetbrains.anko.db.*
class ForecastDb(private val forecastDbHelper: ForecastDbHelper = ForecastDbHelper.instance,
private val dataMapper: DbDataMapper = DbDataMapper()) : ForecastDataSource {
fun saveForecast(forecast: ForecastList) = forecastDbHelper.use {
//dataMapper.convertFromDomain(forecast) will return CityForecast object
with(dataMapper.convertFromDomain(forecast)) {
insert(CityForecastTable.NAME, *map.toVarargArray())
}
}
}
class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayForecast>) {
var _id: Long by map
var city: String by map
var country: String by map
constructor(id: Long, city: String, country: String, dailyForecast: List<DayForecast>)
: this(HashMap(), dailyForecast) {
this._id = id
this.city = city
this.country = country
}
}
Run Code Online (Sandbox Code Playgroud)
代码C.
fun <K, V : Any> Map<K, V?>.toVarargArray(): Array<out Pair<K, V>> =
map({ Pair(it.key, it.value!!) }).toTypedArray()
Run Code Online (Sandbox Code Playgroud)
源代码
fun SQLiteDatabase.insert(tableName: String, vararg values: Pair<String, Any?>): Long {
return insert(tableName, null, values.toContentValues())
}
Run Code Online (Sandbox Code Playgroud)
小智 3
你那里几乎拥有一切
使用星号*运算符(也称为扩展运算符)将数组扩展到vararg内部函数。
https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs
添加 ?达到该值,您就可以开始了
fun <K, V : Any> Map<K, V?>.toVarargArray() = map { it.key to it.value }.toTypedArray()
insert("", *mapOf("k" to "v").toVarargArray())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |