Kotlin官网-学习Kotlin 资料

基础语法

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

  1. 使用package声明包,包的声明应处于源文件顶部。main函数是程序入口
  2. 目录与包的结构无需匹配:源代码可以在文件系统的任意位置
  3. 类的属性可以在其声明或主体中列出
  4. 类之间继承由冒号(:)声明。默认情况下类都是 final 的;如需让一个类可继承, 请将其标记为 open

Kotlin Tour

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

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

Kotlin中的基本类型
image.png
Kotlin和其他语言一样,有集合、数组、Map三种集合类型

image.png
Kotlin里面没有三元运算符,可以通过if表达式替代

when和Swift中的Switch类似,既可以做表达式也可以做语句

Kotlin中的函数,如果没有写return,默认返回Unit。类似于swift中的Void

Kotlin中的lambda表达式和Swift中的闭包一样,都是一等公民,可以当做参数或赋值给一个变量或者当做结果被返回,如果是函数最后一个参数可以使用尾随闭包语法,只是语法不太一样。Swift中是大括号包起来用in区分参数和执行体,Kotlin中是大括号包起来用->区分参数和执行体。

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

image.png

Kotlin中的?:操作符和Swift中的 ?? 一样,当左值为null的时候使用右边的默认值

语法概览

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

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

image.png

image.png

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

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

image.png

image.png

泛型参数 out、in实现协变与逆变
image.png

image.png

image.png

image.png

image.png

image.png

image.png

对象表达式 使用 object 关键字
image.png

image.png

image.png

image.png

image.png

image.png

image.png

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

注解知识 book.kotlincn.net/text/annota…
image.png

通过例子学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…

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%