kotlin精要
2023-03-17 10:02:51 10 举报
AI智能生成
《第一行代码》第三版 kt部分笔记
作者其他创作
大纲/内容
编程思想
面向对象
继承
主构造
次构造
接口
可见性
数据类型和单例类
密封类
泛型
实化
应用
协变
逆变
委托
Lambda
集合的函数式API
val maxLengthFruit = list.maxBy { it.length }
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val newList = list.map { it.toUpperCase() }
val newList = list.map { it.toUpperCase() }
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val newList = list.filter { it.length <= 5 } .map { it.toUpperCase() }
val newList = list.filter { it.length <= 5 } .map { it.toUpperCase() }
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val anyResult = list.any { it.length <= 5 }
val allResult = list.all { it.length <= 5 }
println("anyResult is " + anyResult + ", allResult is " + allResult)
val anyResult = list.any { it.length <= 5 }
val allResult = list.all { it.length <= 5 }
println("anyResult is " + anyResult + ", allResult is " + allResult)
Java的函数式API
.let
小魔术
字符串表达式
函数的参数默认值
语法糖
infix构建更可读的语法
DSL
DSL.kt
变量
val
const val
var
lateinit
集合
list
set
map
by lazy
函数
逻辑控制
if
when
for
标准函数
with
run
apply
repeat
静态方法
使用object关键字创建单例类可以使用类名.方法的方式调用
如果只想要类中一个方法遵循这种方式就需要使用伴生类companion object来实现
这两种方式都是模仿了静态方法的语法,但不是真正的静态方法。如果需要使用真正的静态方法,使用@JvmStatic注解。
这样在kt和java中就都可以使用静态方式调用了。
这样在kt和java中就都可以使用静态方式调用了。
或者将方法定义为顶层方法也可以。
拓展函数
.use
高阶函数
内联函数
noinline与crosinline
非内联函数只能使用return@方法名 来返回lambda表达式
内联函数由于本质是替换,可以用return关键字来返回外层函数
内联函数接收的lambda表达式也要求是内联的所以如果有传递参数的需求,
可以使用noinline关键字将其中一个lambda表达式取消内联
可以使用noinline关键字将其中一个lambda表达式取消内联
应用
可变参数
运算符
空指针检查
?.
!!.
?:
运算符重载
协程
org.jetbrains.kotlinx:kotlinx-coroutines-core
org.jetbrains.kotlinx:kotlinx-coroutines-android
org.jetbrains.kotlinx:kotlinx-coroutines-android
协程作用域
GlobalScope.launch
runBlocking
suspend
coroutineScope
管理协程
Job()
获取结果
async
withContext
suspendCoroutine
0 条评论
下一页