Kotlin学习3-匿名函数

1:定义

定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数或者从其他函数返回

匿名函数可以定做变量赋值给函数类型的变量,就像其他变量一样,匿名函数就可以在代码里传递了,和具名函数不一样,除少数情况外,匿名函数不需要return关键字来返回数据,它会隐式或自动返回函数体的最后一行语句的结果

那位问了,我干嘛要学这个东东?正常写函数不好吗?不好,因为匿名函数有存在的价值,就好比是java的匿名函数,你能说它没用吗?就是这个道理

2:集中匿名函数的写法

写法一:不带参数,分步写

这种写法不常见,因为有点多此一举,但是用它来了解函数的运行规律很有必要

private fun method1() {
        //第一步:创建匿名函数
        val getX: () -> String
        //第二步:调用匿名函数
        getX = {
            "X"
        }
        println(getX)
    }

写法二:带参数,不分步

这种写法才是比较常用的写法:后声明类型{}里为变量,返回值是String

 private fun method2() {
        val getX: (Int, Int) -> String = { num1, num2 ->
            "第一个参数:$num1,第二个参数:$num2"
        }
        println(getX(1, 2))
    }

写法三:it关键字,it相当于传入的参数(仅一个参数时可用)

跟上面一样,只是多一个it关键字

 private fun method3() {
        val getX: (Int) -> String = {
            "$it"
        }
        println(getX(1))
    }

写法四:自动类型推断

 private fun method4() {
        //自动类型推断就不能用冒号的方式了,需要用等号
        val getX = { num1: Int, num2: Int ->
            //会自动推断出String
            "第一个参数:$num1,第二个参数:$num2"
        }
        println(getX(1, 2))
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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可以更好地支持函数式编程风格。 希望这个解答能够帮助到你,如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值