本篇章为其他零碎知识点补充。
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"
}
变换函数
- map:传入集合,对集合进行遍历处理,结果返回集合(可能是同一类型也可能是其他类型),作为链上下一个函数的输入。
- flatmap:操作一个集合的集合,将其中多个集合中的集合合并后返回一个包含所有元素的单一集合。
//map
val animalsList = arrayListOf("cat", "dog", "mouse")
fun testMap() {
animalsList.map { animal ->
"$animal is cute,"
}.map { animal ->
"$animal lived."
}
//合并元素
val newFlatMap = listOf(listOf(1, 2, 3), listOf(4, 5, 6))
.flatMap {
it
}
}
过滤函数
filter,根据条件进行过滤得到想要的结果。
//filter 过滤
val myList = arrayListOf(1, 2, 4, 4, -1)
val positives = myList.filter { it > 0 }
合并函数
- zip,合并两个集合,返回一个包含键值对的新集合。
- folder,接受一个初值累加器值,随后根据匿名函数的结果更新。
//zip和folder
val nameList = arrayListOf("tony", "lily")
val ageList = arrayListOf(10, 20)
val result = nameList.zip(ageList).toMap()
val result1: Int = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9).fold(0) { result, item ->
result + item
}
迭代器函数
generateSquence
//generateSequence
fun testA() {
//从2开始选1000个
generateSequence(2) { value -> value + 1 }.take(1000)
}
kotlin 调用 Java
- 属性访问不需要 get 和 set。
- Java 函数返回可为空时,kotlin 调用需要加上空安全
Java 调用 Kotlin
- @JvmName ,修改名字。
- @JvmFiled ,java 可以直接访问列表。
- @JvmOverloads,协助产生 kotlin 函数的重载版本。
- @JvmStatic,静态变量。
- @Throw,抛错。