Kotlin基础学习 16

目录

1.Kotlin语言的可空类型扩展函数

2.Kotlin语言的infix关键字

3.Kotlin语言的定义扩展文件

4.Kotlin语言的重命名扩展学习

5.Kotlin语言的DSL学习

6.Kotlin语言的变换函数map

7.Kotlin语言的变换函数-flatmap


1.Kotlin语言的可空类型扩展函数

//对 String?== 可空类型的 进行函数扩展,并且有备用值
fun String?.outputStringValueFun(defaultValue:String) = println(this ?: defaultValue)
fun String?.outputStringValueFunGet(defaultValue: String) = if(this == null) defaultValue else this
// TODO 118.Kotlin语言的可空类型扩展函数
fun main(){val infoValue : String ?= nullinfoValue.outputStringValueFun("我是默认值1")val name = "Derry"name.outputStringValueFun("我是默认值2")println(infoValue.outputStringValueFunGet("我是默认值3"))println(name.outputStringValueFunGet("我是默认值4"))
}

2.Kotlin语言的infix关键字

private infix funC1.gogogo(c2:C2){println("我们的中缀表达式,对一个参数的内容是:$this")println("我们的中缀表达式,对二个参数的内容是:$c2")
}
// TODO 118.Kotlin语言的infix关键字
//infix == 中缀表达式 可以简化代码
fun main(){//下面是我们map自带的中缀表达式mapOf("零".to(0))mapOf("一" to 1)mapOf("二" to 2)mapOf("三" to 3)//我们自己写的中缀表达式123 gogogo '男'"Bxb".gogogo('M')"Bxb2" gogogo 'M'
}

3.Kotlin语言的定义扩展文件

//导包
import com.bxb.s6.bxb.randomItemValue
import com.bxb.s6.bxb.randomItemValuePrintln
// TODO 120.Kotlin语言的定义扩展文件
fun main(){val list : List = listOf("张三","李四","王五")val set:Set = setOf(15.6,456.5,784.6)//如果不用扩展文件println(list.shuffled().first())println(set.shuffled().first())//使用扩展文件println(list.randomItemValue())println(set.randomItemValue())list.randomItemValuePrintln()set.randomItemValuePrintln()
}

4.Kotlin语言的重命名扩展学习

//导包
import com.bxb.s6.bxb.randomItemValue as g
import com.bxb.s6.bxb.randomItemValuePrintln as f
// TODO 120.Kotlin语言的重命名扩展学习
fun main(){val list : List = listOf("张三","李四","王五")val set:Set = setOf(15.6,456.5,784.6)//使用扩展文件println(list.g())println(set.g())list.f()set.f()
}

5.Kotlin语言的DSL学习


import java.io.Fileclass Context{val info = "我就是Bxb"val name = "DDD"fun toast(str:String) = println("toast:$str")
}
inline fun Context.apply5(lambda:Context.(String) -> Unit):Context{lambda(info)return this
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
inline fun File.applyFile(action:(String,String?) -> Unit) : File{setWritable(true)setReadable(true)action(name,readLines()[0])return this
}
// TODO 123.Kotlin语言的DSL学习
fun main(){val context:Context = Context().apply5 {//it == String == "我就是Bxb"println("我的it是$it,我的this是:$this")toast("success")toast(it)toast(name)true}.apply5 {  }.apply5 {  }.apply5 {  }println()println("我始终是输出Context本身:"+context.info)println()val file:File = File("D:\\a.txt").applyFile { fileName, data ->println("你的文件名是:$fileName,你的文件里面的数据是:$data")println("你的文件名是:$fileName,你的文件里面的数据是:$data")println("你的文件名是:$fileName,你的文件里面的数据是:$data")}.applyFile { a, b ->  }.applyFile { a, b ->  }println("我始终是输出File本身:${file.name}")
}

6.Kotlin语言的变换函数map

// TODO 124.Kotlin语言的变换函数map
fun main(){val list = listOf("张三","李四","王五")//原理:就是把你 匿名函数 最后一行的返回值 加入一个新的集合,心机和的泛型是R,并且返回新集合val list2 : List = list.map {"[$it]"88}println(list2)//用途:和RxJava的思路,一模一样val list3 : List = list.map {"姓名是:$it"}.map {"$it,文字的长度是:${it.length}"}.map {"[$it]"}for (s in list3){print("$s ")}println()list.map {"姓名是:$it"}.map {"$it,文字的长度是:${it.length}"}.map {"[$it]"}.map {print("$it ")}
}

7.Kotlin语言的变换函数-flatmap

// TODO 125.Kotlin语言的变换函数-flatmap
// TODO flatmap 相当于 List> 集合的集合,有嵌套关系
fun main(){val list:List = listOf("张三","李四","王五")val newList :List = list.map {"你的姓名是:$it"}.map {"$it,你文字的长度是:${it.length}"}.flatMap {listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")}println(newList)println()val newList2:List = list.flatMap {listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")}println(newList2)
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部