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 ?= null
    infoValue.outputStringValueFun("我是默认值1")
    val name = "Derry"
    name.outputStringValueFun("我是默认值2")
    println(infoValue.outputStringValueFunGet("我是默认值3"))
    println(name.outputStringValueFunGet("我是默认值4"))
}

2.Kotlin语言的infix关键字

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'
}

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

//导包
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()
}

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<String> = listOf("张三","李四","王五")
    val set:Set<Double> = setOf(15.6,456.5,784.6)

    //使用扩展文件
    println(list.g())
    println(set.g())
    list.f()
    set.f()
}

5.Kotlin语言的DSL学习


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}")
}

6.Kotlin语言的变换函数map

// 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 ")
    }
}

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

// 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)
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种现代化的静态类型编程语言,它可以在Java虚拟机(JVM)上运行,并且与Java语言高度兼容。如果你想学习Kotlin,以下是一个学习路线的建议: 1. 了解基础知识:开始学习Kotlin之前,建议先了解一些基本的编程概念和语法,比如变量、数据类型、条件语句、循环语句等。这将为你后续的学习打下坚实的基础。 2. 学习Kotlin语法:Kotlin与Java有很多相似之处,但也有一些不同之处。学习Kotlin的语法和特性,比如空安全、扩展函数、数据类等,可以通过官方文档、教程或在线课程来学习。 3. 实践编程:通过编写一些简单的程序来巩固所学的知识。可以尝试解决一些小问题或者完成一些小项目,这样可以更好地理解和应用Kotlin的语法和特性。 4. 深入学习面向对象编程:Kotlin是一种面向对象的编程语言,深入学习面向对象编程的概念和原则对于掌握Kotlin非常重要。学习类、对象、继承、多态等概念,并尝试在Kotlin中应用这些概念。 5. 学习Kotlin与Java的互操作性:由于Kotlin与Java高度兼容,学习如何在Kotlin中使用Java类库和框架是非常重要的。了解如何调用Java代码、处理Java集合等,可以帮助你更好地使用Kotlin进行开发。 6. 深入学习Kotlin的高级特性:一旦掌握了Kotlin基础知识,可以进一步学习一些高级特性,比如协程、函数式编程、DSL等。这些特性可以提高你的代码质量和开发效率。 7. 参与实际项目:最好的学习方式是通过实践。尝试参与一些实际的项目或者开源项目,与其他开发者合作,这样可以提升你的编程能力和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值