目录
- //对 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 ?= null
- infoValue.outputStringValueFun("我是默认值1")
- val name = "Derry"
- name.outputStringValueFun("我是默认值2")
- println(infoValue.outputStringValueFunGet("我是默认值3"))
- println(name.outputStringValueFunGet("我是默认值4"))
- }
- private infix fun<C1,C2>C1.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'
- }
- //导包
- import com.bxb.s6.bxb.randomItemValue
- import com.bxb.s6.bxb.randomItemValuePrintln
- // TODO 120.Kotlin语言的定义扩展文件
- fun main(){
- val list : List<String> = listOf("张三","李四","王五")
- val set:Set<Double> = 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()
- }
- //导包
- import com.bxb.s6.bxb.randomItemValue as g
- import com.bxb.s6.bxb.randomItemValuePrintln as f
- // TODO 120.Kotlin语言的重命名扩展学习
- fun main(){
- val list : List<String> = listOf("张三","李四","王五")
- val set:Set<Double> = setOf(15.6,456.5,784.6)
-
- //使用扩展文件
- println(list.g())
- println(set.g())
- list.f()
- set.f()
- }
-
- import java.io.File
-
- class 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}")
- }
- // TODO 124.Kotlin语言的变换函数map
- fun main(){
- val list = listOf("张三","李四","王五")
- //原理:就是把你 匿名函数 最后一行的返回值 加入一个新的集合,心机和的泛型是R,并且返回新集合
- val list2 : List<Int> = list.map {
- "[$it]"
- 88
- }
- println(list2)
- //用途:和RxJava的思路,一模一样
- val list3 : List<String> = 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 ")
- }
- }
- // TODO 125.Kotlin语言的变换函数-flatmap
- // TODO flatmap 相当于 List<List<String>> 集合的集合,有嵌套关系
- fun main(){
- val list:List<String> = listOf("张三","李四","王五")
- val newList :List<String> = list.map {
- "你的姓名是:$it"
- }.map {
- "$it,你文字的长度是:${it.length}"
- }.flatMap {
- listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")
- }
- println(newList)
- println()
- val newList2:List<String> = list.flatMap {
- listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")
- }
- println(newList2)
- }