根底语法

参考这儿 book.kotlincn.net/text/basic-…

  1. 运用package声明包,包的声明应处于源文件顶部。main函数是程序进口
  2. 目录与包的结构无需匹配:源代码能够在文件体系的恣意方位
  3. 类的特点能够在其声明或主体中列出
  4. 类之间承继由冒号(:)声明。默许情况下类都是 final 的;如需让一个类可承继, 请将其符号为open

Kotlin Tour

参考这儿 kotlinlang.org/docs/kotlin…

fun声明函数,main是程序进口,val是只读变量,var是可变变量,能够运用模板字符串拼接多个变量

Kotlin中的根本类型

Kotlin官网-学习Kotlin
Kotlin和其他语言相同,有集合、数组、Map三种集合类型

Kotlin官网-学习Kotlin
Kotlin里边没有三元运算符,能够经过if表达式代替

when和Swift中的Switch类似,既能够做表达式也能够做句子

Kotlin中的函数,假如没有写return,默许回来Unit。类似于swift中的Void

Kotlin中的lambda表达式和Swift中的闭包相同,都是一等公民,能够作为参数或赋值给一个变量或许作为结果被回来,假如是函数最终一个参数能够运用跟随闭包语法,只是语法不太相同。Swift中是大括号包起来用in区分参数和履行体,Kotlin中是大括号包起来用->区分参数和履行体。

Kotlin中有独有的data class,用于存储数据并供给一系列的办法可用,常用的有下面这些

Kotlin官网-学习Kotlin

Kotlin中的?:操作符和Swift中的 ?? 相同,当左值为null的时候运用右边的默许值

语法概览

参考这儿 book.kotlincn.net/text/d-conc…

  1. 在 Kotlin 中,所有东西都是目标,在这个意义上讲能够在任何变量上调用成员函数与特点
  2. Kotlin中enum也是一个class,语法是enum class XX
  3. 假如主结构函数没有任何注解或许可见性修饰符,能够省略这个constructor要害
class Person constructor(firstName: String) { /*……*/ }
class Person(firstName: String) { /*……*/ }
  1. 类也能够声明前缀有constructor次结构函数。假如类有一个主结构函数,每个次结构函数需求托付给主结构函数, 能够直接托付或许经过别的次结构函数间接托付。托付到同一个类的另一个结构函数用this要害字即可。这一点类似于Swift中便利结构器convenience
  2. 在 Kotlin 中所有类都有一个共同的超类Any,对于没有超类型声明的类它是默许超类
  3. 默许情况下,Kotlin 类是最终(final)的——它们不能被承继。 要使一个类可承继,请用open要害字符号它
  4. 假如函数没有标示open,那么子类中不允许定义相同签名的函数, 无论加不加override

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

lateinit 修饰符只能用在类体中的特点(不是在主结构函数中声明的var特点, 而且仅当该特点没有自定义 getter 或 setter 时),也用于顶层特点与局部变量。 该特点或变量有必要为非空类型,而且不能是原生类型

要检测一个lateinit var是否已经初始化过,请在该特点的引用上运用.isInitialized

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

泛型参数 out、in完成协变与逆变

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

目标表达式 运用 object 要害字

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

Kotlin官网-学习Kotlin

扩展函数、办法、lambda中this指向 book.kotlincn.net/text/this-e…

Kotlin官网-学习Kotlin

注解常识 book.kotlincn.net/text/annota…

Kotlin官网-学习Kotlin

经过比如学Kotlin

检查这儿 play.kotlinlang.org/byExample/o…

标准函数let,also,with,run 和 apply

1)、let 函数,有必要让某个目标调用,接纳一个 Lambda 表达式参数,Lambda 表达式中的参数为当时调用者,且最终一行代码作为回来值

2)、also 函数,有必要让某个目标调用,接纳一个 Lambda 表达式参数,Lambda 表达式中的参数为当时调用者,无法指定回来值,这个函数回来的是当时调用目标自身

3)、with 函数,接纳两个参数,第一个为恣意类型参数,第二个为 Lambda 表达式参数,Lambda 表达式中具有第一个参数的上下文 this ,且最终一行代码作为回来值

4)、run 函数,有必要让某个目标调用,接纳一个 Lambda 表达式参数,Lambda 表达式中具有当时调用目标的上下文 this ,且最终一行代码作为回来值。和let函数相同,只是内部拜访receiver不相同,let中默许是it,run中是this。比较let来说只是方便了直接拜访和修正特点

5)、apply 函数,有必要让某个目标调用,接纳一个 Lambda 表达式参数,Lambda 表达式中具有当时调用目标的上下文 this ,无法指定回来值,这个函数回来的是当时调用目标自身。主要用于在代码块内批量修正特点

资料

  1. Kotlin开端 kotlinlang.org/docs/gettin…
  2. 根底语法 kotlinlang.org/docs/basic-…
  3. Kotlin Tour kotlinlang.org/docs/kotlin…
  4. Learn Kotlin by Example play.kotlinlang.org/byExample/o…
  5. 常识能力测试 kotlinlang.org/docs/koans.…
  6. 语法概览 kotlinlang.org/docs/basic-…
  7. Gradle官网 docs.gradle.org/current/use…
  8. Gradle入门 book.kotlincn.net/text/get-st…