阳光沙滩
让学习编程变得简单
Hi~ kotlin and 喜马拉雅 系列文章之三
发表于 2020-02-04    阅读次数 522

嗨喽~小伙伴们有几天没更新文章了 那我们开始吧!大家近期注意注意防护!

文章 对应 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