Kotlin系列篇--Kotlin函数定义和调用

第三部分: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
  • 局部函数帮助你让代码变得更加简洁的同时,避免重复
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值