在 Scala 中指定 lambda 返回类型

2024-07-04

注意:这是一个理论问题,我并不是试图解决任何问题,也不是试图达到任何实际效果

在 Scala 中创建 lambda 时使用(arguments)=>expression语法,可以显式提供返回类型吗?

Lambda 与方法没有什么不同,它们都被指定为表达式,但据我了解,方法的返回类型可以轻松定义为def name(arguments): return type = expression syntax.

考虑这个(说明性的)例子:

def sequence(start: Int, next: Int=>Int): ()=>Int = {
    var x: Int = start

    //How can I denote that this function should return an integer?    
    () => {
        var result: Int = x
        x = next(x)
        result
    }
}

您始终可以通过附加来声明表达式的类型:和类型。因此,例如:

((x: Int) => x.toString): (Int => String)

例如,如果您有一个大而复杂的表达式并且您不想依赖类型推断来直接获取类型,那么这非常有用。

{
  if (foo(y)) x => Some(bar(x))
  else        x => None
}: (Int => Option[Bar])
// Without type ascription, need (x: Int)

但如果将结果分配给具有指定类型的临时变量,可能会更清楚:

val fn: Int => Option[Bar] = {
  if (foo(y)) x => Some(bar(x))
  else        _ => None
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Scala 中指定 lambda 返回类型 的相关文章

随机推荐

  • Swift:解压缩文件

    我正在努力获得String使用本机从 zip 文件内的 txt 文件中获取libcompression图书馆 实际上我使用的代码来自 https github com mw99 DataCompression blob master Sou
  • 重复 for 循环的迭代

    如果出于某种原因我想重复相同的迭代 我该如何在 python 中做到这一点 for eachId in listOfIds assume here that eachId conatins 10 response makeRequest e
  • Java中的相似字符串比较

    我想相互比较几个字符串 并找到最相似的字符串 我想知道是否有任何库 方法或最佳实践可以返回哪些字符串与其他字符串更相似 例如 狐狸跳得很快 gt 狐狸跳了 敏捷的狐狸跳了 gt 狐狸 该比较将返回第一个比第二个更相似 我想我需要一些方法 例
  • Actionscript 3 中循环的变量声明性能

    尽管所有关于这个问题的已知博客我总是怀疑一些结果 而且我的个人测试表明 所说的标准并不是最好的 在循环内部声明变量 使它们接近其范围并使其更快地被方法访问 但分配更多内存或在循环外部声明for范围可以节省内存分配 但增加处理以在远程实例中进
  • Java:什么是“for (;;)”[重复]

    这个问题在这里已经有答案了 有人可以帮我解释一下这条指令吗 为了 我遇到过几种这样的标记 比如在 facebook 的 ajax 代码和 Java 的并发内容中 无限循环 for 循环的三个部分中的每一个部分 for x y z 是可选的
  • Android应用程序启动图标大小[重复]

    这个问题在这里已经有答案了 遵循 Google 的指南 我已将 48x48 和 72x72 启动器图标添加到我的 mdpi 和 hdpi 屏幕项目中 但在某些情况下 图标的大小会被调整 例如 在我的 Acer Iconia A200 平板电
  • 在 WCF 服务关闭之前执行操作

    我有一个托管在 IIS7 中的 WCF 服务 该服务有一个静态类 其中包含包含字符串 某种日志 的静态列表 它定期将条目写入文件或数据库 但是 当 IIS 决定回收应用程序或出于任何原因终止时 静态字段中的条目将丢失 有什么方法可以处理服务
  • 在 Bash 中使用大小写表示数字范围

    我正在尝试使用以下方法进行操作case在 Bash 中 在 Linux 中 如果X在460到660之间 则输出X信息 如果 X 介于 661 和 800 之间 请执行其他操作 Etc 现在这就是我所拥有的 case MovieRes in
  • 如何循环调用分页函数?

    我正在尝试使用空气桌API https airtable com api从我的数据中检索记录 具体来说 是我在列单元格中的 URL 列表 我写了一个函数 get airtable records 通过以下方式进行 API 调用curl它可以
  • OpenCV 2.4.6 SIFT 关键点检测使用大量内存

    我们在 openCV 2 4 3 中使用 SIFT 我们决定升级到 openCV 2 4 6 升级后 openCV 2 4 6 中的内存使用量从约 150MB 跃升至 1 2GB 有人知道这是一个错误还是我们现在需要配置的东西吗 我们的图像
  • PHP url 函数和子域

    我有一个网站thenoblesite com 它有一些子域 即 download thenoblesite com壁纸 thenoblesite com etc 子域的页面位于主 htdocs 文件夹中 即 httpdocs downloa
  • 字符串的两半就地交错

    给定一个字符串even尺寸 说 abcdef123456 我如何将两半交错 这样same字符串将变成这样 a1b2c3d4e5f6 我尝试开发一种算法 但失败了 有人能给我一些吗hints至于如何进行 我需要在不创建额外的字符串变量或数组的
  • Android CardView 不适用于 Api 21

    我正在使用安卓CardView它在 Api 21 下完美运行 但是当我在 Api 21 即 Lollipop 上使用它时 XML 属性如下cardElevation cornerRadius不起作用 我究竟做错了什么 这是我的 XML 布局
  • 如何解决“您的系统管理员已将 Chrome 配置为打开备用浏览器进行访问”

    我正在尝试在 google chrome 中打开一个应用程序 当我启动 chrome 网站时 它会重定向到 IE 并在 chrome 中显示消息 您的系统管理员已将 chrome 配置为打开备用浏览器进行访问 如何克服这个问题 Behavi
  • Socket:Python中的2路通信

    我想要在 Python 中进行双向通信 我想绑定到一个客户端可以连接的套接字 然后服务器和客户端可以彼此 聊天 我已经有了基本的监听器 import socket HOST localhost PORT 50008 s socket soc
  • 让所有街道在 Google 地图视口中可见

    我正在尝试使用以下算法构建地图 等待平移或缩放发生 查询视口中可见的所有街道 范围 使用预定义的颜色为每条可见街道着色 Example 我想显示每条街道上的企业数量 或者每条街道上发生的犯罪数量 我有一个数据库 其中包含此类信息 街道名称
  • PHAsset(或 ALAsset)跨设备标识符

    我实际上正在创建一个 iOS 应用程序 并且想要在 SQLite 数据库中存储有关照片库图片的一些详细信息 我还希望能够在用户拥有的不同设备上共享这些数据 想象一下有人想要在他的 iPhone 上重新组织图片 并想要在他的 iPad 上检索
  • 计算已发布字符串中的行数

    我试过这个 PHP 中计算文本区域中的新行以调整容器大小 https stackoverflow com questions 1743745 count new lines in textarea to resize container i
  • 没有可编译的体系结构(ARCHS=i386、VALID_ARCHS=arm64 armv7 armv7s)

    Preface 我确实看过类似的问题 https stackoverflow com questions 22328882 xcode 5 1 no architectures to compile for only active arch
  • 在 Scala 中指定 lambda 返回类型

    注意 这是一个理论问题 我并不是试图解决任何问题 也不是试图达到任何实际效果 在 Scala 中创建 lambda 时使用 arguments gt expression语法 可以显式提供返回类型吗 Lambda 与方法没有什么不同 它们都