需求:
从数据源接收数据,然后通过转换操作转换为用户需要的数据类型进行消费使用。
1、定义数据类,用于存储临时数据
data class TempData<T> (var info: T)
2、定义数据接收处理接口,并保存在数据类中
fun <R> receiver(action:()->R):TempData<R> {
return TempData(action())
}
3、对数据类进行接口扩展,自定义扩展接口map,目的是进行数据转换,并保存在数据类中
fun <T, R> TempData<T>.map(action:T.()->R):TempData<R> {
return TempData(action(info))
}
4、对数据类进一步扩展,自定义扩展接口comsume,对数据进行处理操作
fun <T> TempData<T>.consume(action:T.()->Unit):Unit{
return action(info)
}
简单举例:
fun main() {
receiver{
"Kotline study!"
}.map{
println("current info is ${this}")
"[Current info is${this}]"
}.map{
length
}.consume{
println("current info length is $this")
}
}
执行之后打印结果为:
current info is Kotline study!
current info length is 32