kotlin中的匿名函数以及利用Function定义函数

本文介绍了Kotlin编程语言中函数的三种形式:具名函数,通过`fun`关键字定义;匿名函数,可以无名定义并直接使用;以及利用Function接口定义的函数,支持不同参数数量和返回类型。在示例中展示了各种函数的定义和调用方式。
摘要由CSDN通过智能技术生成

1、具名函数:有名字的函数

1.1 定义

fun namedFun(a: Int, b: Int): String {
    return "The sum of $a and $b is ${a + b}"
}

1.2 使用

fun main(){
	val res = namedFun(1, 2)
}

2、匿名函数:没有名字的函数

2.1 定义

//匿名函数两种写法
//1. 带:方式, 需指定返回类型
val anonymousFun1: (Int, Int) -> String = { a, b ->
    "The sum of $a and $b is ${a + b}"
    //匿名函数不要写return,最后一行就是返回值
}

//2.不带:方式, 自动推断返回类型
val anonymousFun2 = { a: Int, b: Int ->
    "The sum of $a and $b is ${a + b}"
}

2.2 使用

fun main(){
	val res1 = anonymousFun1.invoke(1, 2)
    val res2 = anonymousFun2.invoke(1, 2)
}

3、利用Function函数式接口定义函数

3.1 定义

//Function0表示0个形参的函数
//Function1表示1个形参的函数
//Function2表示2个形参的函数
//...
//FunctionN表示n个形参的函数


//Function2表示2个形参的函数, 返回值为String
val f21: Function2<Int, Int, String> = { a, b ->
    "The sum of $a and $b is ${a + b}"
}

//Function2表示2个形参的函数, 没有返回值
val f20: Function2<Int, Int, Unit> = { a, b->
    val res = "The sum of $a and $b is ${a + b}"
    println(res)
}

使用

fun main(){
	val res = f21.invoke(1, 2)
    f20.invoke(1, 2)
}
Kotlin匿名函数是一种没有名称的函数定义方式。它可以作为函数参数传递,并且能够引用定义在其作用域之外的变量。匿名函数可以使用关键字"fun"来定义,并且可以有多个参数和返回类型。 下面是一个示例,展示了匿名函数的不同定义方式: ```kotlin // 普通的匿名函数 val add = fun(x: Int, y: Int): Int { return x + y } // 简写的匿名函数 val subtract = fun(x: Int, y: Int) = x - y ``` 在上面的例子,我们定义了两个匿名函数,一个是add函数用于求和,另一个是subtract函数用于相减。这两个函数可以像普通函数一样被调用和使用。 同时,匿名函数还可以通过引用在其作用域之外的变量。这意味着在匿名函数内部,可以访问定义在其外部函数内的变量,如下所示: ```kotlin fun sayHello(name: String): () -> Unit { val message = "Hello, $name!" return fun() { println(message) } } val hello = sayHello("John") hello() // 输出:Hello, John! ``` 在上面的例子,我们定义了一个sayHello函数,它返回一个匿名函数,这个匿名函数可以访问sayHello函数内部定义的message变量。通过调用返回的匿名函数,我们可以打印出正确的问候语。 值得注意的是,匿名函数和Lambda表达式都可以称为函数字面值(Function Literals)。它们在使用方式上有一些差异,但本质上都是指一段没有名称的函数体或代码块。它们的灵活性使得Kotlin可以更好地支持函数式编程风格。 希望这个解答能够帮助到你,如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KillerNoBlood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值