第三章 函数相关
-
集合:Kotlin复用了Java的容器类,可用hashListOf、arrayListOf语法糖进行快速赋值,分别对应HashList和ArrayList数据结构
-
函数参数
- 命名参数:可以在使用函数传参时标明一些参数的名称
- 默认参数值:通过给参数赋值优化Java重载 使用@JvmOverLoads使得在JAVA中像重载一样使用
-
顶层函数和属性:
- 顶层函数:会被编译成类的静态函数,该类的类名为包含该函数的文件名,可用@JwmName("…")指定类名
- 顶层属性:var变量、val常量、const常量
- Kotlin:var直接使用,val和const需用 包名.
- Java:var有getter和setter,val只有getter,const 包名.
-
拓展函数和属性
- 拓展函数
- 相当于定义在类外面的成员函数,需要加上接受者类型,即类名,位置在函数名的前面
- 不允许打破被拓展类的封装,不能访问private和protected方法和属性
- 多态时调用哪个拓展函数由静态类型决定
- 拓展属性:与拓展函数用法类似,但是需要增加对应的getter和setter
- 拓展函数
-
可变参数:使用vararg关键字代替var/val,对应java中的XXX…
-
中缀调用
- 没有额外的分隔符,直接将函数名称放在目标对象名称和参数之间
- infix关键字定义:public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)
-
解构声明
- 把一个对象解构成多个变量,并可以独立使用他们
- 原理
- 内部转化为 val name = className.component1( ) -> 在类中定义 operator fun component1( ) = name
- 数据类中自动定义
-
字符串操作
- 正则表达式: (String).toRegex()
- 多行字符串:使用三个"""包起来
-
局部函数:解决代码重复问题