Kotlin fun() 与 lambda 有区别吗?

2024-01-03

这个问题是关于 fun() 与 lambda 块定义和范围的问题。
我尝试用两种方式定义表达式。这是我尝试过的:

  val myFunction = fun(){
    println("i am in a function")
    }

//but i also tried doing this:

    val myFunction = {
    println("i am in a lambda")
    }

我的问题是我不知道它们是否等效且相同?


差异最好描述于https://kotlinlang.org/docs/reference/lambdas.html#anonymous-functions https://kotlinlang.org/docs/reference/lambdas.html#anonymous-functions:

  1. 匿名函数允许您指定返回类型,而 lambda 则不允许。

  2. 如果不这样做,返回类型推断将像普通函数一样工作,而不是像 lambda 那样。

  3. 正如@dyukha所说,其含义return是不同的:

    不带标签的 return 语句始终从使用 fun 关键字声明的函数返回。这意味着 lambda 表达式内的 return 将从封闭函数返回,而匿名函数内的 return 将从匿名函数本身返回。

  4. 没有隐含的it参数,或解构。

是的,您的具体情况将是等效的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin fun() 与 lambda 有区别吗? 的相关文章

随机推荐

  • Maven 为同一个项目生成两个不同的 WAR 文件

    我有一个 Maven Web 服务项目 由两个不同的服务类 testClass1 和 testClass2 组成 我想要为同一项目的两个类创建两个不同的 WAR 文件 目前我正在为这两个服务生成单个 WAR 文件 如何为同一个项目生成两个不
  • 用于 Java 的非阻塞 io Web 服务器/框架

    有谁知道任何用于java的node js风格的网络服务器框架 我意识到 在处理 Web 请求时具有非阻塞回调行为需要 Web 服务器级别的深入支持 我对 Node js 感兴趣 但是当我有一个最终保存数据的 Web 服务器时 我想利用 Ja
  • sed one-liner - 查找关键字周围的分隔符对

    我通常使用大型 XML 文件 并且通常通过以下方式进行字数统计 grep确认某些统计数据 例如 我想确保至少有五个实例widget通过以下方式在单个 xml 文件中 cat test xml grep ic widget 此外 我只是希望能
  • 你能通过地址比较对象是否相等吗?

    我有一个函数可以按每个属性比较对象以查看它们是否相同 但我只是想知道 通过地址比较对象而不是检查它们是否是完全相同的对象会更好吗 编辑 请注意 如果您希望函数正常工作 则不能将值 对象 传递给函数 您需要传递 可能是常量 引用或指针 如果您
  • Android 货币符号排序

    我正在使用非英语语言环境的设备 英语货币的格式如下 1 如果我有英语语言环境 我会得到欧元货币 例如 1 Using format setCurrency Currency getInstance currency return forma
  • 角度 2 生产构建后出现意外标记 <

    在构建我的 Angular 2 应用程序之后ng build prod我复制了dist我的 node js 项目中的文件夹并将基本标签修改为 现在 当我尝试在浏览器中打开时 我收到以下错误 polyfills aa13f03 bundle
  • 导入环境OpenAI Gym出错

    我正在尝试运行 OpenAI Gym 环境 但出现以下错误 import gym env gym make Breakout v0 ERROR Library Frameworks Python framework Versions 3 8
  • 如何检索距离我的范围 0.5 公里以内的帖子?

    我正在保存用户发布的帖子的坐标 我正在生成一个推送 ID 然后使用它来保存帖子数据和 geofire 坐标 我只想显示那些在 0 5 公里半径范围内的帖子 我在用GeoFire库相同 但我无法完成任务 以下是我生成推送 ID 的方法 ite
  • Typescript 实用程序“记录”和“部分”不适用于受约束的泛型

    我需要基于受约束的泛型创建一个新类型 新类型应具有与通用类型相同的键 使它们可选并将它们映射到数字 我的第一个方法是使用Partial
  • 单击蒙版时如何关闭模态窗口 extjs?

    如果我创建一个模式窗口 Ext define myWindow extend Ext Container alias widget myWindow floating true modal true listeners onMaskClic
  • 我可以用 Java 进行低级网络编程吗?

    应用程序级消息以一系列数据包的形式通过网络发送 这些数据包在接收端组装并传递到应用程序级 是否有可能在Java在这些单独的数据包级别上进行网络编程 Or in Java我们只能看到 应用程序 级别的数据包 IE 由所有这些网络数据包组装而成
  • 如何在WPF中使用另一个项目的资源?

    我有一个解决方案 其中有很多 WPF 应用程序和类库项目 我想在其他 WPF 应用程序的 Resources 文件夹下的另一个项目中使用图标 我怎样才能做到这一点 我不想在所有不同的项目中一遍又一遍地复制相同的图像 Use 包 URI 语法
  • 如何从自定义标签的代码(短代码)访问11ty中的页面前端数据?

    在 Eleventy 11ty 中 页面源可以在其 front matter 中定义自定义数据 例如 title this is front matter data Page content myCustomTag valueOfArg1
  • PHP - 除某些单词外,每个单词的第一个字符大写

    我有一批像这样的字符串 tHe iPad hAS gONE ouT of STOCK PoWER uP YOur iPhone wHAT moDEL is YOUR aPPLE iPHOne 我想将每个单词的第一个字符大写 并将其余字符小写
  • C# 中的 Int32 与 Int64 与 Int [重复]

    这个问题在这里已经有答案了 可能的重复 假设32位整数 https stackoverflow com questions 164643 assuming 32bit ints 所以我在 C 中读到 int 等于 int32 在 64 位机
  • TensorFlow 安装错误,未启用 Windows LongPath 支持

    我正在尝试安装 TensorFlow 但不断收到长路径错误 我安装了 Python 3 9 和 pip 21 3 1 每当我运行 pip install tensorflow 时 我都会收到以下错误 错误 由于 OSError 无法安装软件
  • C中当前进程的内存使用情况

    我需要用 C 语言获取当前进程的内存使用情况 有人可以提供如何在 Linux 平台上执行此操作的代码示例吗 我知道cat proc
  • 重新定义Python内置函数

    我正在开发一个 python 程序 作者编写了一个如下所示的函数 def blah str asdf asdf asdf doStuff str 这似乎有效 尽管 str 是内置函数并且不应该用作变量 这里到底发生了什么 我的猜测是 str
  • 是否可以复制/克隆 Web 请求的 HttpContext

    克隆当前请求的 HttpContext 实例的最简单方法是什么 我正在开发一个应用程序Asp net MVC v1 我升级了常规 PartialView 功能 使其实际上具有行为非常相似的子控制器 但具有自己的上下文 当您使用 Partia
  • Kotlin fun() 与 lambda 有区别吗?

    这个问题是关于 fun 与 lambda 块定义和范围的问题 我尝试用两种方式定义表达式 这是我尝试过的 val myFunction fun println i am in a function but i also tried doin