《第一行代码》第三版学习笔记( 七)
数据存储的三种方式
文件存储
SharedPreferences存储
SQLite数据库存储
kotlin高阶函数的应用
适用于简化各种API调用
简化ContentValues的用法
//open 添加的扩展函数 并且接受函数类型参数 属于高阶函数了
fun SharedPreferences.open(block:SharedPreferences.Editor.()->Unit){
val editor = edit()
editor.block()
editor.apply()
}
//应用
getSharedPreferences("data", Context.MODE_PRIVATE).open {
putString("name","Tom")
putInt("age",28)
putBoolean("married",false)
}
Google自身提供的扩展库包含了上述这种用法,这个库会在创建项目的时候自动引入
源库代码如下
//应用
getSharedPreferences("data", Context.MODE_PRIVATE).edit{
putString("name","Tom")
putInt("age",28)
putBoolean("married",false)
}
简化ContentValues的用法
//vararg可变参数列表
//Pair是键值对类型 键为String类型 值很多种 所以Any Any?代表可以传空值进去
//apply函数的返回值就是它的调用对象本身 这是单行代码语法糖 用等号替代返回值的声明 apply拥有这个对象的上下文
fun cvOf(vararg pairs: Pair<String,Any?>)=ContentValues().apply{
val cv = ContentValues()
for(pair in pairs){
val key = pair.first
val value = pair.second
when(value){
is Int -> cv.put(key,value)
is Long -> cv.put(key, value)
is Short -> cv.put(key, value)
is Float -> cv.put(key, value)
is Double -> cv.put(key, value)
is Boolean -> cv.put(key, value)
is String -> cv.put(key, value)
is Byte -> cv.put(key, value)
is ByteArray -> cv.put(key, value)
null -> cv.putNull(key)
}
}
}