• Kotlin基础学习 16


    目录

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

    2.Kotlin语言的infix关键字

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

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

    5.Kotlin语言的DSL学习

    6.Kotlin语言的变换函数map

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


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

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

    2.Kotlin语言的infix关键字

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

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

    1. //导包
    2. import com.bxb.s6.bxb.randomItemValue
    3. import com.bxb.s6.bxb.randomItemValuePrintln
    4. // TODO 120.Kotlin语言的定义扩展文件
    5. fun main(){
    6. val list : List<String> = listOf("张三","李四","王五")
    7. val set:Set<Double> = setOf(15.6,456.5,784.6)
    8. //如果不用扩展文件
    9. println(list.shuffled().first())
    10. println(set.shuffled().first())
    11. //使用扩展文件
    12. println(list.randomItemValue())
    13. println(set.randomItemValue())
    14. list.randomItemValuePrintln()
    15. set.randomItemValuePrintln()
    16. }

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

    1. //导包
    2. import com.bxb.s6.bxb.randomItemValue as g
    3. import com.bxb.s6.bxb.randomItemValuePrintln as f
    4. // TODO 120.Kotlin语言的重命名扩展学习
    5. fun main(){
    6. val list : List<String> = listOf("张三","李四","王五")
    7. val set:Set<Double> = setOf(15.6,456.5,784.6)
    8. //使用扩展文件
    9. println(list.g())
    10. println(set.g())
    11. list.f()
    12. set.f()
    13. }

    5.Kotlin语言的DSL学习

    1. import java.io.File
    2. class Context{
    3. val info = "我就是Bxb"
    4. val name = "DDD"
    5. fun toast(str:String) = println("toast:$str")
    6. }
    7. inline fun Context.apply5(lambda:Context.(String) -> Unit):Context{
    8. lambda(info)
    9. return this
    10. }
    11. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    12. inline fun File.applyFile(action:(String,String?) -> Unit) : File{
    13. setWritable(true)
    14. setReadable(true)
    15. action(name,readLines()[0])
    16. return this
    17. }
    18. // TODO 123.Kotlin语言的DSL学习
    19. fun main(){
    20. val context:Context = Context().apply5 {
    21. //it == String == "我就是Bxb"
    22. println("我的it是$it,我的this是:$this")
    23. toast("success")
    24. toast(it)
    25. toast(name)
    26. true
    27. }.apply5 { }.apply5 { }.apply5 { }
    28. println()
    29. println("我始终是输出Context本身:"+context.info)
    30. println()
    31. val file:File = File("D:\\a.txt")
    32. .applyFile { fileName, data ->
    33. println("你的文件名是:$fileName,你的文件里面的数据是:$data")
    34. println("你的文件名是:$fileName,你的文件里面的数据是:$data")
    35. println("你的文件名是:$fileName,你的文件里面的数据是:$data")
    36. }.applyFile { a, b -> }.applyFile { a, b -> }
    37. println("我始终是输出File本身:${file.name}")
    38. }

    6.Kotlin语言的变换函数map

    1. // TODO 124.Kotlin语言的变换函数map
    2. fun main(){
    3. val list = listOf("张三","李四","王五")
    4. //原理:就是把你 匿名函数 最后一行的返回值 加入一个新的集合,心机和的泛型是R,并且返回新集合
    5. val list2 : List<Int> = list.map {
    6. "[$it]"
    7. 88
    8. }
    9. println(list2)
    10. //用途:和RxJava的思路,一模一样
    11. val list3 : List<String> = list.map {
    12. "姓名是:$it"
    13. }.map {
    14. "$it,文字的长度是:${it.length}"
    15. }.map {
    16. "[$it]"
    17. }
    18. for (s in list3){
    19. print("$s ")
    20. }
    21. println()
    22. list.map {
    23. "姓名是:$it"
    24. }.map {
    25. "$it,文字的长度是:${it.length}"
    26. }.map {
    27. "[$it]"
    28. }.map {
    29. print("$it ")
    30. }
    31. }

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

    1. // TODO 125.Kotlin语言的变换函数-flatmap
    2. // TODO flatmap 相当于 List<List<String>> 集合的集合,有嵌套关系
    3. fun main(){
    4. val list:List<String> = listOf("张三","李四","王五")
    5. val newList :List<String> = list.map {
    6. "你的姓名是:$it"
    7. }.map {
    8. "$it,你文字的长度是:${it.length}"
    9. }.flatMap {
    10. listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")
    11. }
    12. println(newList)
    13. println()
    14. val newList2:List<String> = list.flatMap {
    15. listOf("$it 在学习C++","$it 在学习Java","$it 在学习Kotlin")
    16. }
    17. println(newList2)
    18. }

  • 相关阅读:
    Linux防火墙firewalld(粗糙版)
    浅谈无脚本自动化测试
    react18 001
    【数据库入门】关系型数据库为什么这么受欢迎?
    Meta Llama 3本地部署
    Jest:JavaScript的单元测试利器
    spring ioc,DI,AOP概述
    动态规划基础
    TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的
    常见IO模型(非常详细)
  • 原文地址:https://blog.csdn.net/m0_57026595/article/details/125427056