Kotlin函数类型的实例化

本文介绍了Kotlin中函数类型的四种实例化方式:1) Lambda表达式;2) 匿名函数;3) 反射引用;4) 实现函数类型接口的类。通过具体的代码示例,详细解析了每种方式的用法和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种函数格式

1,函数字面值

1.1,Lambda

1.2,匿名函数

2,反射引用普通函数

3,实现函数类型接口的类

 

首先定义一个需要函数作为参数的函数

fun myFunIns(data:Int, myFun:(arg:Int)->Int):Int{

    return myFun(data)

}

注意其中定义的函数类型是 (arg:Int)->Int ,也即参数是一个Int,返回一个Int

 

这是第一种格式,即函数字面值的Lambda表示法

    var result1 = myFunIns(123, {

        it * 2

    })

上面利用 it 做了简化。也可以将 lambda 抽取出来,此刻无法使用 it 简化:

    var result1 = myFunIns(123, {

        data ->

        data * 2

    })

 

第二种格式,是函数字面值的匿名函数

    var result2 = myFunIns(123, fun(data:Int):Int{

        return data * 3

    })

同样,匿名函数可以抽取出来

    val result2_fun = fun(data:Int):Int{ //We can extract it out

        return data * 3

    }

 

第三种是反射引用格式

    fun myFun(data:Int):Int{

        return data * 4

    }

    val result3 = myFunIns(123, ::myFun)

 

第四种是偶然看到的,通过一个类实现一个接口,该接口有一个函数。

    class MyFun:(Int)->Int{

        override operator fun invoke(data:Int):Int{

            return data * 5

        }

    }

    val result4 = myFunIns(123, MyFun())

 

比较绕,尚不知何种情况使用

 

实践代码:https://gist.github.com/maxyou/6527b0f2019704ce7ae257d5cb17791b

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值