Kotlin——函数

一、函数头

在这里插入图片描述

  • 使用了 fun 关键字来定义函数;
  • 函数名称,使用的是驼峰命名法(大部分情况下);
  • 函数参数,是以 (name: String) 这样的形式传递的,这代表了参数类型为 String 类型;
  • 返回值类型,紧跟在参数的后面;
  • 最后是花括号内的函数体,它代表了整个函数的逻辑。

二、函数参数

  1. 默认值参
    如果不打算传入参数,则可预先给参数设置默认值

    fun doSomething(a: Int=1) {
        
    }
    
  2. 具名值参

    fun doSomething(a: Int=1) {
        
    }
    
    doSomething(a = 2)
    

三、Unit 的函数

如果一个函数不返回任何有用的值,它的返回类型是 Unit。Unit 是一种只有一个值——Unit 的类型。这个值不需要显式返回。类似于void,但是Unit函数解决了在泛型中的应用。

fun printHello(name: String?): Unit {
    if (name != null)
        println("Hello $name")
    else
        println("Hi there!")
    // `return Unit` 或者 `return` 是可选的
}

四、TODO函数

TODO函数的作用是抛出异常,返回值为Nothing类型

public inline fun TODO(reason: String): Nothing = throw NotImplementedError("An operation is not implemented: $reason")

例如

fun sum(a: Int, b: Int):Int {
    if (a == null || b == null) {
        TODO("异常")
    }
    return a + b
}

五、匿名函数

  • 定义时不取名字的函数称为匿名函数

  • 匿名函数通常整体传递给其他函数或者从其他函数返回,指定特殊规则

        val s = "abscsabsa"
        val count = s.count({ letter ->
            letter == 'a'
        })
    

匿名函数类型与隐式返回

在这里插入图片描述

  • () -> 返回值类型
  • 和具名函数不一样,除极少数情况外,匿名函数不需要return关键字返回数据,匿名函数会隐式或自动返回函数体最后一行语句的结果

匿名函数参数

和具名函数一样,匿名函数可以不带参数,也可以带一个或多个任意类型的参数

  • 参数的类型放在匿名函数的类型中定义

  • 参数名放在函数定义

        val blessingFunction: (String,Int) -> String = { name,age ->
            
        }
    
  • it关键字:定义只有一个参数的匿名函数时,可以使用it关键字表示参数名

        val blessingFunction: (String) -> String = {
            "hello $it"
        }
    

类型推断

  • 定义一个变量时,如果已把匿名函数作为变量赋值给它,就不需要显示指明变量类型
    在这里插入图片描述
  • 类型推断也支持带参数的匿名函数,但匿名函数的参数名和参数类型必须有
    在这里插入图片描述

定义参数时函数的函数

fun showOnBoard(goodsName: String, showDiscount: (String,Int) -> String) {
    
}

简略写法:如果一个函数的lambda参数排在最后,,或者是唯一参数,那么括住lambda参数的一对圆括号可以省略

    val blessingFunction = {
        "hello"
    }

六、函数内联

内联时Kotlin的一种优化机制,有了内联,JVM就不需要使用lambda对象实例了,因而避免了变量内存分配。哪里需要lambda,编译器就会将函数体复制粘贴到哪里。不然,JVM会为所有同lambda打交道的变量分配内存,这就产生了内存开销,带来性能问题。

七、函数引用

函数引用可以把一个具名函数转换成一个值参,使用lambda表达式的地方,都可以使用函数引用
在这里插入图片描述

八、函数类型作为返回类型

在这里插入图片描述

九、闭包

  • 在Kotlin中,匿名函数能修改并引用定义在自身的作用域之外的变量,及一个函数引用了另外一个函数的变量,Kotlin中的lambda就是闭包
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值