安卓系列之 kotlin 基础知识(九)

121 阅读2分钟

本篇章为其他零碎知识点补充。

as

重命名,在当前文件中如果存在重名情况,可以使用 as 对对象或者方法进行重命名。

import com.elaine.mygzh.pagefour.Book as book

//as 重命名的使用
fun testAs() {
    val myAs = book(1"222")
}

单表达式函数

fun theAnswer() = 42

infix

用 infix 修饰的方法,调用的时候可以省略点号和括号,适用于单个参数的扩展函数和类函数。
常用代表:mapOf("a" to 2)中的 to。

infix fun String.addAdd(count: Int): String = this + "+".repeat(count)

fun testInfix() {
    "a" addAdd 3
}

DSL

领域特定语言,一种 API 编程范式,暴露接收者的函数和特性,以便于使用 lambda 函数来读取和配置。

位操作符

shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与
or(bits) – 或
xor(bits) – 异或
inv() – 反向

object

创造单例

object Resource {
    val name = "Name"
}

变换函数

  1. map:传入集合,对集合进行遍历处理,结果返回集合(可能是同一类型也可能是其他类型),作为链上下一个函数的输入。
  2. flatmap:操作一个集合的集合,将其中多个集合中的集合合并后返回一个包含所有元素的单一集合。
//map
val animalsList = arrayListOf("cat""dog""mouse")
fun testMap() {
    animalsList.map { animal ->
        "$animal is cute,"
    }.map { animal ->
        "$animal lived."
    }

    //合并元素
    val newFlatMap = listOf(listOf(123), listOf(456))
        .flatMap {
            it
        }
}

过滤函数

filter,根据条件进行过滤得到想要的结果。

//filter 过滤
val myList = arrayListOf(1244, -1)
val positives = myList.filter { it > 0 }

合并函数

  1. zip,合并两个集合,返回一个包含键值对的新集合。
  2. folder,接受一个初值累加器值,随后根据匿名函数的结果更新。
//zip和folder
val nameList = arrayListOf("tony""lily")
val ageList = arrayListOf(1020)
val result = nameList.zip(ageList).toMap()

val result1: Int = listOf(123456789).fold(0) { result, item ->
    result + item
}

迭代器函数

generateSquence

//generateSequence
fun testA() {
    //从2开始选1000个
    generateSequence(2) { value -> value + 1 }.take(1000)
}

kotlin 调用 Java

  1. 属性访问不需要 get 和 set。
  2. Java 函数返回可为空时,kotlin 调用需要加上空安全

Java 调用 Kotlin

  1. @JvmName ,修改名字。
  2. @JvmFiled ,java 可以直接访问列表。
  3. @JvmOverloads,协助产生 kotlin 函数的重载版本。
  4. @JvmStatic,静态变量。
  5. @Throw,抛错。

项目 github 地址

github.com/ElaineTaylo…

若帅哥美女对该系列文章感兴趣,可微信搜索公众号(木子闲集)关注更多更新文章哦,谢谢~