开始阅读Kotlin官方文档。先上文档目录。有些内容还未阅读,有些目录标目翻译还需琢磨琢磨。后续再将具体内容的链接逐步加上。
文档链接:https://kotlinlang.org/docs/kotlin-docs.pdf
网页链接:https://kotlinlang.org/docs/reference/
1. 入门
1.1.基本语法
1.1.1. 定义包
1.1.2. 定义函数
1.1.3. 定义局部变量
1.1.4. 使用字符串模板
1.1.5. 使用条件表达式
1.1.6. 使用nullable值检测空(null)值
1.1.7. 使用类型检查和自动转换
1.1.8. 使用for循环
1.1.9. 使用while循环
1.1.10. 使用when表达式
1.1.11. 使用range(范围)
1.1.12. 使用集合
1.2. 习惯术语
1.2.1. 创建DTO(POJO / POCO)
1.2.2. 函数参数的默认值
1.2.3. 过滤列表
1.2.4. 字符串插值
1.2.5. 实例检查
1.2.6. 遍历映射表/列表对
1.2.7. 使用range(范围)
1.2.8. 只读列表
1.2.9. 只读映射表
1.2.10. 访问映射表
1.2.11. Lazy属性
1.2.12. 扩展函数
1.2.13. 创建单例模式
1.2.14. If语句非空简写
1.2.15. If语句非空和else简写
1.2.16. If语句空,执行语句
1.2.17. If语句非空,执行语句
1.2.18. When语句返回值
1.2.19. ‘try/catch’表达式
1.2.20. ‘if’表达式
1.2.21. 返回Unit类型的方法生成器风格用法
1.2.22. 单一表达式函数
1.2.23. 在对象实例中调用多方法(‘with’)
1.2.24. Java7的try与资源
1.3. 编码约定
1.3.1. 命名风格
1.3.2. 冒号
1.3.3. Lambda表达式
1.3.4. Unit
2. 基本概念
2.1. 基本类型
2.1.1. 数字
2.1.1.1. 文字常数
2.1.1.2. 表示法
2.1.1.3. 显式转换
2.1.1.4. 操作
2.1.2. 字符
2.1.3. 布尔值
2.1.4. 数组
2.1.5. 串
2.1.5.1. 串文字
2.1.5.2. 串模板
2.2. 包
2.2.1. 导入
2.2.2. 顶层声明的可见范围
2.3. 控制流
2.3.1. If表达式
2.3.2. When表达式
2.3.3. For循环
2.3.4. While循环
2.3.5. 中断和继续循环
2.4. 返回和跳转
2.4.1. 中断和继续标签
2.4.2. 在标签处返回
3. 类与对象
3.1. 类与继承
3.1.1. 类
3.1.1.1. 构造器
3.1.1.2. 创建类实例
3.1.1.3. 类成员
3.1.2. 继承
3.1.2.1. 重写成员
3.1.2.2. 重写规则
3.1.3. 抽象类
3.1.4. 友元(伴侣)对象
3.1.5. 类封闭
3.2. 属性和域
3.2.1. 声明属性
3.2.2. 获取器和设置器
3.2.2.1. 支持(反向)域
3.2.2.2. 支持(反向)属性
3.2.3. 编译常数
3.2.4. 延后初始化属性
3.2.5. 重写属性
3.2.6. 委托属性
3.3. 接口
3.3.1. 实现接口
3.3.2. 接口属性
3.3.3. 解决重写冲突
3.4. 可见性修饰符
3.4.1. 包
3.4.2. 类和接口
3.4.2.1. 构造函数
3.4.2.2. 局部声明
3.4.3. 模块
3.5. 扩展
3.5.1. 扩展函数
3.5.2. 扩展的静态解决方案
3.5.3. 可空接收器
3.5.4. 扩展属性
3.5.5. 友元(伴侣)对象扩展
3.5.6. 扩展范围
3.5.7. 推动
3.6. 数据类
3.6.1. 复制
3.6.2. 数据类和变形声明
3.6.3. 标准数据类
3.7. 泛型
3.7.1. 变异
3.7.1.1. 声明位置变异
3.7.2. 类型推测
3.7.2.1. 使用位置变异:类型推测
3.7.2.2. 主角推测
3.8. 泛型函数
3.9. 泛型约束条件
3.9.1. 上界
3.10. 嵌套类
3.10.1. 内部类
3.11. 枚举类
3.11.1. 初始化
3.11.2. 匿名类
3.11.3. 与枚举常数使用
3.12. 对象表达式和声明
3.12.1. 对象表达式
3.12.2. 对象声明
3.12.2.1. 友元(伴侣)对象
3.12.2.2. 对象表达式与声明之间的语义不同之处
3.13. 委托
3.13.1. 类委托
3.14. 委托属性
3.14.1. 属性委托要求
3.14.2. 标准委托
3.14.2.1. Lazy(懒方法)
3.14.2.2. Observable(可观测方法)
3.14.3. 在映射表中属性分类
4. 函数和Lambda表达式
4.1. 函数
4.1.1. 函数声明
4.1.2. 函数用法
4.1.2.1. 中缀(infix)注释
4.1.2.2. 参数
4.1.2.3. 默认自变量
4.1.2.4. 命名自变量
4.1.2.5. 返回Unit类型函数
4.1.2.6. 单表达式函数
4.1.2.7. 显式返回类型
4.1.2.8. 可变的自变量数量
4.1.3. 函数范围
4.1.3.1. 局部函数
4.1.3.2. 成员函数
4.1.4. 泛型函数
4.1.5. 内联函数
4.1.6. 扩展函数
4.1.7. 高阶函数和Lambda表达式
4.1.8. 尾递归函数
4.2. 高阶函数和Lambda表达式
4.2.1. 高阶函数
4.2.2. 内联函数
4.2.3. 函数文本和函数表达式
4.2.3.1. 函数类型
4.2.3.2. 函数文本语法
4.2.3.3. 函数表达式
4.2.3.4. 闭包
4.2.3.5. 扩展函数表达式
4.3. 内联函数
4.3.1. 非内联
4.3.2. 非局部返回
4.3.3. 具体化类型参数
5. 其它
5.1. 变形声明
5.1.1. 例子:从函数中返回两个值
5.1.2. 例子:变形声明和映射表
5.2. 范围
5.2.1. 怎样工作
5.2.2. 实用函数
5.2.2.1. rangeTo()
5.2.2.2. downTo()
5.2.2.3. reversed()
5.2.2.4. step()
5.3. 类型检查和转换
5.3.1. is和!is操作符
5.3.2. 智能(聪明)转换
5.3.3. “非安全”转换操作符
5.3.4. “安全”(可空)转换操作符
5.4. 表达式
5.4.1. 限制
5.5. 等式
5.5.1. 引用等式
5.5.2. 结构等式
5.6. 操作符重载
5.6.1. 约定
5.6.1.1. 一元操作
5.6.1.2. 二元操作
5.6.2. 中缀调用的函数命名
5.7. 空安全
5.7.1. 可空类型和非空类型
5.7.2. 检查条件中的空
5.7.3. 安全调用
5.7.4. Elvis操作符
5.7.5. !!操作符
5.7.6. 安全转换
5.8. 异常
5.8.1. 异常类
5.8.1.1. Try是表达式
5.8.2. 检查异常
5.8.3. Java互操作性
5.9. 注释
5.9.1. 注释声明
5.9.1.1. 用法
5.9.1.2. 构造器(函数)
5.9.1.3. Lambda表达式
5.9.2. 注释使用位置目标
5.9.3. Java注释
5.10. 反射
5.10.1. 类引用(参考)
5.10.2. 函数引用(参考)
5.10.2.1. 例子:函数构成
5.10.3. 属性引用(参考)
5.10.3.1. 与Java反射互操作性
5.10.4. 构造器引用(参考)
5.11. 类型安全生成器
5.11.1. 类型安全生成器例子
5.11.2. 怎样工作的
5.11.3. com.example.html包的完整定义
5.12. 动态类型
6. 引用(参考)
7. 互操作
7.1. 与java互操作
7.1.1. 从kotlin中调用Java代码
7.1.1.1. 获取器和设置器
7.1.1.2. 返回void 的方法
7.1.1.3. 对Kotlin的关键字被作为Java的标识符的转码
7.1.1.4. 空安全和平台类型
7.1.1.5. 映射表类型
7.1.1.6. Kotlin的Java泛型
7.1.1.7. Java数组
7.1.1.8. 操作符
7.1.1.9. 异常检查
7.1.1.10. 对象方法
7.1.1.11. 从java类继承
7.1.1.12. 访问静态成员
7.1.1.13. Java反射
7.1.1.14. SAM转换
7.1.2. 从Java中调用Kotlin代码
7.1.2.1. 属性
7.1.2.2. 包层次的函数
7.1.2.3. 域
7.1.2.4. 静态方法和域
7.1.2.5. 用@JName处理签名冲突
7.1.2.6. 重载生成器
7.1.2.7. 异常检查
7.1.2.8. 空安全
8. 工具
8.1. 文档化Kotlin代码
8.1.1. 生成文档
8.1.2. KDoc语法
8.1.3. 文档块标签
8.1.3.1. @param <name>
8.1.3.2. @return
8.1.3.3. @constructor
8.1.3.4. @property <name>
8.1.3.5. @throws <class>, @exception <class>
8.1.3.6. @sample <identifier>
8.1.3.7. @see <identifier>
8.1.3.8. @author
8.1.3.9. @since
8.1.3.10. @suppress
8.1.4. 内联标记
8.1.4.1. 链接到元素
8.2. 使用Maven
8.2.1. 插件和版本
8.2.2. 配置快照资源库
8.2.3. 依赖关系
8.2.4. 仅Kotlin源代码编译
8.2.5. 与Java源码一起编译Kotlin
8.2.6. OSGi
8.2.7. 例子
8.3. 使用Ant
8.3.1. 取得Ant任务
8.3.2. 仅用Kotlin源码产生JVM
8.3.3. 仅用Kotlin源码和多个根产生JVM
8.3.4. 用Kotlin和Java源码产生JVM
8.3.5. 用单一源码文件夹产生JavaScript
8.3.6. 用前缀、后缀和原映射表选项产生JavaScript
8.3.7. 用单一源码文件夹和元信息选项产生JavaScript
8.3.8. 引用(参考)
8.3.8.1. 特性
8.3.8.2. 特性
8.4. 使用Gradle
8.4.1. 插件和版本
8.4.2. 针对JVM
8.4.3. 针对JavaScript
8.4.4. 针对Android
8.4.4.1. Android Studio
8.4.5. 配置依赖关系
8.4.6. 使用快照版本
8.4.7. OSGi
8.4.8. 例子
8.5. Kotlin 和 OSGi
8.5.1. Maven
8.5.2. Gradle
8.5.3. 常见问题及回答
8.5.3.1. 为什么不直接添加要求的manifest选项到所有的Kotlin代码库?
9. 常见问题与解答
9.1. 常见问题与解答
9.1.1. 常见问题
9.1.1.1. Kotlin是什么?
9.1.1.2. 为什么是一门新的编程语言?
9.1.1.3. 如何授权?
9.1.1.4. 与Java兼容吗?
9.1.1.5. 有工具支持吗?
9.1.1.6. 有Eclipse支持吗?
9.1.1.7. 有独立的编译器吗?
9.1.1.8. Kotlin 是函数式编程语言吗?
9.1.1.9. Kotlin支持泛型吗?
9.1.1.10. 要求分号(;)吗?
9.1.1.11. 要求花括号吗?
9.1.1.12. 为什么类型声明在右侧?
9.1.1.13. 右侧类型声明会影响工具吗?
9.1.1.14. Kotlin可扩展吗?
9.1.1.15. 我能嵌入我的DSL到该编程语言中吗?
9.1.1.16. JavaScript支持什么ECMAScript级别?
9.1.1.17. JavaScript back-end支持模块系统吗?
9.2. 与Java对比
9.2.1.1. 在Kotlin中解决了一些Java问题。
9.2.1.2. Java支持的,而Kotlin不支持的是什么?
9.2.1.3. Java不支持的,而Kotln支持的是什么?
9.3. 与Scala对比
9.3.1.1. Scala支持的,而Kotlin不支持的是什么?
9.3.1.2. Scala不支持的,而kotlin支持的是什么?