认识kotlin中的lambda表达式

2022-10-24  本文已影响0人  BlueSocks

当我从 Java 过渡到 Kotlin 时,我注意到除了消除样板代码之外,lambda 表达式是 Kotlin 语言中最强大的工具之一,也是真正简化 android 开发过程的高阶函数之一,在本文中,我将教你一些我学到的基本知识,让你不仅在 Kotlin 中而且在其他语言中也开始使用 lambda。

什么是 lambda?

最简单的定义:Lambda 是作为表达式传递的匿名函数。就这么简单明了。因此,将它们作为参数传递给方法,返回它们或执行我们通常对正常对象执行的任何操作都相当容易。

让我们开始吧:

这是一个简单的函数,您无需使用 Lambda 表达式即可关联

class Lambda {

    companion object{

        fun sum3(num1 :Int, num2:Int):Int{
            return num1 + num2
        }
    }

}

fun main(args:Array<String>){

    val sum_output = Lambda.sum3(4 ,6)
    print(sum_output)
}

上面是一个简单的函数,它采用两个整数参数将它们相加,并以整数的形式返回总和。

现在,让我们将等效函数视为 lambda 表达式。

class Lambda {

    companion object{

        val sum:(Int,Int) -> Int = {x:Int,y:Int -> x + y}
    }

}

fun main(args:Array<String>){
    val sum_output = Lambda.sum(5,6)
    println(sum_output)

}

让我们来分解一下:

在我们的例子中,参数声明我们的表达式采用两个整数类型的值

然后是箭头符号,然后是要返回的返回类型。请注意,如果表达式不返回任何内容,则返回类型应为 Unit

我们定义我们的两个变量和要执行的操作,此表达式可以进一步简化,以使其更短并消除冗余。

class Lambda {

    companion object{

        val sum = {x : Int, y : Int -> x + y}
    }

}

fun main(args:Array<String>){
    val sum_output = Lambda.sum(5,6)
    println(sum_output)

}

在这里,Kotlin 编译自我计算并返回两个值的总和。lambda 中唯一非可选的部分是代码正文。

不返回任何值的 Lambdas

不返回任何值的 Lambda 使用 unit 关键字显式告诉编译器此表达式不返回任何值

class Lambda {

    companion object{

       //        This expressions do not return anything
        val noReturn : (Int) -> Unit = { num -> println(num * num) }

        val n : (String) -> Unit = {name -> println(name)}
    }

}

fun main(args:Array<String>){

    Lambda.noReturn(4)

    Lambda.myName("Peter")
}
上一篇下一篇

猜你喜欢

热点阅读