前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Kotlin】函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )

【Kotlin】函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )

作者头像
韩曙亮
发布2023-03-30 18:36:45
7360
发布2023-03-30 18:36:45
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、匿名函数变量类型推断


定义变量 时 , 如果将变量值 直接赋值给该变量 , 那么就可以 不用显示声明该变量的类型 ;

下面的代码中 , 定义 name 变量 , 为其 赋值 “Tom” 字符串 String 类型变量值 , 则 该变量被自动推断为 String 类型变量 ;

代码语言:javascript
复制
var name = "Tom"

如果 变量没有赋值 , 则声明变量时 , 必须显示声明该变量的类型 ;

代码语言:javascript
复制
var name: String

如果定义一个 函数类型 变量 , 将 匿名函数 作为变量值 赋值给该变量 , 此时可以 不需要显示声明 函数类型 变量的值 ;

下面的代码中的 函数类型 : ()->String 可以省略 , 由 类型推断 来确定 helloFun 只读变量的值 ;

代码语言:javascript
复制
    val helloFun: ()->String = {
        val name = "Tom"
        "Hello World, $name"
    }

代码示例 : 如下代码中 , helloFun 变量没有设置变量类型 , 其类型由 赋值给 该变量的 匿名函数 的 类型自动推断得来 , 匿名函数类型为 ()->String 类型 ;

代码语言:javascript
复制
fun main() {
    val helloFun = {
        val name = "Tom"
        "Hello World, $name"
    }
    println(helloFun())
}
在这里插入图片描述
在这里插入图片描述

二、匿名函数参数类型自动推断


如果 需要 使用 自动类型推断 确定 匿名函数 的 参数类型 ,

则在 匿名函数 的 函数体中 , 必须 显示声明 匿名函数 的 变量名 和 变量类型 ;

匿名函数 返回值 类型 , 是根据 匿名函数 函数体 中 最后一行表达式的值 进行自动推断的 ;

代码示例 : 在下面的函数中 , 匿名函数的函数体中 , 使用 变量名: 变量类型 -> , name: String, age: Int -> , 显示声明了匿名函数的 参数类型 , 这样就可以使用 类型推断 , 自动推断出 匿名函数 的参数类型 ;

该匿名函数 函数体 最后一行表达式 的 类型 是 String 类型 , 其 返回值类型就是 String 类型 ;

代码语言:javascript
复制
fun main() {
    val helloFun = { name: String, age: Int ->
        "Hello World, $name, $age"
    }
    println(helloFun("Tom", 18))
}

执行结果 :

代码语言:javascript
复制
Hello World, Tom, 18

如果 不使用 匿名函数 类型推断 ,

则在 函数变量 声明时 , 确定 函数参数 类型 ,

在 匿名函数 函数体 中 , 确定 函数参数名 即可 ,

示例代码如下 :

代码语言:javascript
复制
fun main() {
    val helloFun: (String, Int)->String = { name, age ->
        "Hello World, $name, $age"
    }
    println(helloFun("Tom", 18))
}

执行结果 :

代码语言:javascript
复制
Hello World, Tom, 18

三、Lambda 表达式


匿名函数 又称为 Lambda 表达式 , 匿名函数的 返回值 是 Lambda 结果 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、匿名函数变量类型推断
  • 二、匿名函数参数类型自动推断
  • 三、Lambda 表达式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档