介绍
本文是为了kotlin常用的内容备忘,属于笔记性质,不会有太多讲解,适合kotlin初学者遗忘后帮助快速想起。会不定时更新。
循环
为了方便每行只是打一个log。
until不带右侧边界。
object KotLinDemo {
//常用循环
fun cycle() {
//普通循环
for (i in 1..10) {Log.d("asdasdasd","i in 1..10 "+i.toString())}
for (i in 1 until 9 step 2) {Log.d("asdasdasd","i until 9 step 2 "+i.toString())}
for (i in 1 until 3) {Log.d("asdasdasd","i until 3 "+i.toString())}
for (i in 10 downTo 3 step 1) { Log.d("asdasdasd","i downTo 3 "+i.toString()) }
//迭代字符串,返回Char
for (i in "qwe") { Log.d("asdasdasd","i in qwe "+i) }
//普通while循环
//while (3 < 10) {}
//list迭代
val alist = listOf<String>("a", "s", "d")
//带下标
for ((index,value) in alist.withIndex()) { Log.d("asdasdasd",index.toString()+" "+value) }
//不带下标
for (i in alist) { Log.d("asdasdasd","i in alist "+i); }
//map迭代
val amap = mapOf(1 to 3, 4 to 2)
for ((key, value) in amap) { Log.d("asdasdasd","map "+key.toString()+" "+value.toString()) }
}
}
when结构
fun aboutWhen() {
val a = 2
//替换if
when {
a !is Int -> Log.d("asd", "a不是int")
2 is Int -> Log.d("asd","2是int")
else -> Log.d("asd", "其他情况")
}
//替代switch
when (a) {
1 -> Log.d("asd", "a等于1")
2 -> Log.d("asd", "a等于2")
}
when (a) {
1, 2, 3 -> Log.d("asd", "a是1 2 3其中一个")
}
//作为返回值 b = 3
val b = when (a) {
2 -> 3
else -> 0
}
//多值 setof不考虑顺序
when (setOf(a, b)) {
setOf(3, 2) -> Log.d("asd", "此行代码会运行,因为a=2,b=3")
}
//when可以是任何对象
val aDate = Date()
when (aDate) {
Date(2L) -> Log.d("asd", "")
else -> Log.d("asd","")
}
}
Lambda语法
1. 无参数的情况 :
val/var 变量名 = { 操作的代码 }
2. 有参数的情况
val/var 变量名 : (参数的类型,参数类型,...) -> 返回值类型 = {参数1,参数2,... -> 操作参数的代码 }
可等价于
// 此种写法:即表达式的返回值类型会根据操作的代码自推导出来。
val/var 变量名 = { 参数1 : 类型,参数2 : 类型, ... -> 操作参数的代码 }
3. lambda表达式作为函数中的参数的时候,这里举一个例子:
fun test(a : Int, 参数名 : (参数1 : 类型,参数2 : 类型, ... ) -> 表达式返回类型){
...
}