Hi~ kotlin and 喜马拉雅 系列文章之三
嗨喽~小伙伴们有几天没更新文章了 那我们开始吧!大家近期注意注意防护!
文章 对应 part 7--8 课
inititle 课程:https://www.bilibili.com/video/av69452769?p=7 inurl 仓库:https://github.com/cooek/Hiximalaya
那我们开始吧!
这里 优化部分不用的变量
几行就搞定,需要有基础才能看懂
标签定义
在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@都是有效的标签(参见语法)。 要为一个表达式加标签,我们只要在其前加标签即可。
this表达式
在Kotlin,有时候需要调用自身的函数或者变量,会用到this表达式
在类的成员中,this指的是该类的当前对象 在扩展函数或者带接受者的函数字面值中,this表示在点左侧传递的接收者参数 如果this没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的this,请使用 标签限定符。
标签处返回
Kotlin 有函数字面量、局部函数和对象表达式。因此 Kotlin 的函数可以被嵌套。 标签限制的 return 允许我们从外层函数返回。 最重要的一个用途就是从 lambda 表达式中返回。 fun foo() { listOf(1, 2, 3, 4, 5).forEach lit@{ if (it == 3) return@lit // 局部返回到该 lambda 表达式的调用者,即 forEach 循环 print(it) } print(" done with explicit label") } 这个是indicator的适配器需要传递上下文。
init方法
初始化
在Kotlin中,除了主构造函数和次构造函数外,还给我们提供了init代码块,供我们做一些初始化操作。 那么kotlin init代码块是什么时候执行的呢,和构造方法以及伴生对象一起使用时它们的执行顺序又是怎样的呢? 示范: class Person() {
/*属性*/
private var gender: Boolean = true
/*次构造方法*/
constructor(name: String,gender: Boolean):this() {
println("constructor")
}
/*初始化代码块*/
init {
println("Person init 2,gender:${gender}")
}
/*初始化代码块*/
init {
println("Person init 1")
}
} 上面是一个简单的Person类,我们在类中写了一个次构造方法、两个init代码块和一个属性
此时,当我们调用Person("yzq",false)时,Person类中代码的执行顺序是什么样的呢
打印结果如下
Person init 2,gender:true Person init 1 constructor
结果
结果:是init执行顺序是在次构造函数之前的 一次是 init -> constructor->
Map集合存储
方法的返回值
fun xxx方法:xx {}
方法后面跟返类型
when关键字
when(index){ 1->println("我帅") 2->println("我不帅") } 是一个分支语句 如果是1的话咋样 如果是二的话咋样
anko
对了 kotlin 开发android 不用找控件的名字 就是 findViewById(R.id.xx)
毕竟以往的布局都是要从 XML 中解析出来,然后再到 LayoutInfalter 里面通过 Constructor.newInstance 反射创建出来的。而 Anko 则是直接创建 View,用代码构建布局,省去了解析 XML 的时间。
好了 写道最后 ,按套路来即可。 bye