高阶函数的应用
是什么
高阶函数是指将函数用作一个函数的参数或者返回值的函数。
高阶函数简化SharedPreferences
fun SharedPrerences.open(block:SharedPreferences.Editor.() -> Unit){
val editor = edit()
editor.block()
editor.apply()
}
- open是拓展函数,添加到SharedPrerences中。它还接受了一个函数类型的参数
getSharedPreferences("data", Context.MODE_PRIVATE).open {
putString("name","Tom")
putBoolean("married",false)
putInt("age",28)
}
简化ContentValues的用法
"Apple" to 1 创建键值对,用着语法结构的时候会创建做出一个 Pari 对象。
-
创建一个ContentValues.kt文件,并在里面定义一个cvOf()方法
-
eg
fun cvOf(vararg pair: Pair<String,Any?>):ContentValues{ }
varary 关键词-》类似java里面的可变参数。
Any?相当于可以传(字符串型,整型,浮点型,null)
-
-
使用高阶函数优化cvOf函数
fun cvOf(varary pairs:Pair<String,Any?>) = ContentValues().apply{ for(pair in pairs){ val key = pair.first val value = pair.second when(value){ is Int ->put(key , value) is Long ->put(key,value) is Short -> put(key ,value) is Float -> put(key ,value) is Double -> put(key ,value) is String -> put(key ,value) is Byte -> put(key ,value) is ByteArray -> put(key ,value) null -> putNull(key) } } }
apply函数返回的正式ContentValues对象
使用
val values = contentValuesOf("name" to "Game of Thrones","author" to "TanGan","page" to 1038,"price" to 20.34) db.insert("Book",null,values)
- 这样就可以更加简化地put数据
參考第一行代碼 郭霖老師