高阶函数的应用
是什么
高阶函数是指将函数用作一个函数的参数或者返回值的函数。
高阶函数简化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)
參考第一行代碼 郭霖老師
|