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中的基本类型 Kotlin和其他语言一样,有集合、数组、Map三种集合类型

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

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

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

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

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

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

语法概览

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

  1. 在 Kotlin 中,所有东西都是对象,在这个意义上讲可以在任何变量上调用成员函数与属性
  2. Kotlin中enum也是一个class,语法是enum class XX
  3. 如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字
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

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

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

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

对象表达式 使用 object 关键字

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

注解知识 book.kotlincn.net/text/annota...

通过例子学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...
相关推荐
人间有清欢14 小时前
十、kotlin的协程
kotlin
吾爱星辰14 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
ChinaDragonDreamer14 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
一丝晨光1 天前
Java、PHP、ASP、JSP、Kotlin、.NET、Go
java·kotlin·go·php·.net·jsp·asp
500了1 天前
Kotlin基本知识
android·开发语言·kotlin
陈亦康2 天前
Armeria gPRC 高级特性 - 装饰器、无框架请求、阻塞处理器、Nacos集成、负载均衡、rpc异常处理、文档服务......
kotlin·grpc·armeria
奋斗的小鹰3 天前
kotlin 委托
android·开发语言·kotlin
Wency(王斯-CUEB)3 天前
【文献阅读】政府数字治理的改善是否促进了自然资源管理?基于智慧城市试点的准自然实验
android·kotlin·智慧城市
中游鱼3 天前
Visual Studio C# 编写加密火星坐标转换
kotlin·c#·visual studio
500了3 天前
kotlin协程
开发语言·python·kotlin