Kotlin系列篇--Kotlin函数定义和调用
第三部分:Kotlin函数的定义和调用
前言:为了让介绍更简单直白,我将把Kotlin集合、字符串和正则表达式作为重点问题领域
一、Kotlin中集合的创建:
在kotli.collections包中包含List(有序集合)、Set(无序集合)、Map(健值对)三种集合:
-
Collection<T> 是集合层次结构的根。此接口表示一个只读集合的共同行为:检索大小、检测是否为 成员等等。Collection 继承自 Iterable <T> 接口,它定义了迭代元素的操作。可以使用Collection 作为适用于不同集合类型的函数的参数。对于更具体的情况,请使用 Collection 的 继承者:List 与 Set。 MutableCollection 是一个具有写操作的 Collection 接口,例如 add 以及 remove 。 Map<K, V> 不是 Collection 接口的继承者;但是它也是 Kotlin 的一种集合类型。Map 存储 键-值 对(或条目);键是唯一的,但是不同的键可以与相同的值配对。Map 接口提供特定的函数进行通过键访 问值、搜索键和值等操作。 MutableMap 是一个具有写操作的 Map 接口,可以使用该接口添加一个新的键值对或更新给定键的值。
二、顶层函数和属性:
Kotlin中方法属性不需要依附于具体的某一个类,所以声明的顶层函数和属性类似于Java中的静态函数和属性,直接通过类名.的方式调用。如果要修改顶层类名使用@file:JvmName()来指定类名。
三、扩展函数和属性:
fun String.lastChar():Char = this.get(this.length-1) println("Kotlin".lastChar())
其中String称为“接收者类型”,this称为“接收者对象”。如果在java中调用该函数:
char c = StringUtilKt.lastChar("Java");//括号中传入接收者对象
注意:扩展函数没有多态,因为扩展函数并不是类的一部分,他在类的外面
open class Father class Child : Father() fun Father.method() = println("Father") fun Child.method() = println("Child") fun main(args: Array<String>) { val father:Father = Child() father.method() } //结果:Father
四、可变参数、中缀调用:
-
可变参数使用vararg关键字来声明 中缀表达式用infix关键字来声明 解构声明
五、正则表达式:
""" """三重引号中,不需要对任何符号进行转义操作。
六、局部函数:
class User(val id:Int,val name:String,val addr:String) fun User.validateBeforeSave(){ fun validate(value: String,fieldName:String){ if (value.isEmpty()){ println("不能保存user $id") } } validate(name,"name") validate(addr,"addr") } fun saveUser(user: User){ user.validateBeforeSave() //TODO SOMETHING }
总结:
-
Kotlin没有定义自己的集合类,而是在Java的基础上,提供丰富的API操作集合 Kotlin可以给函数定义默认值,这样大大降低了重载函数的必要性,而且命名参数让函数调用时更加易读 Kotlin允许许多灵活的代码解构,函数和属性都可以直接在文件中声明,不需要依附于类 Kotlin扩展函数和属性来扩展任何类的API 局部函数帮助你让代码变得更加简洁的同时,避免重复
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
C++后端开发(校招实习生)学习路线