Scala 中的参数列表会直接支持元组解包吗?

2024-04-02

在 Haskell 中你可以这样写:

x :: (Int,Int) -> Int
x (p,s) = p

在 Scala 中你可以这样写:

def x(a: (Int, Int)) = a._1

or:

def x(a: (Int, Int)) = a match {
    case (p, s) => p
}

为什么不拥有类似的东西

def x(_: (p: Int, s: Int)) = p

or

def x(foo: (p @ Int, s @ Int)) = p

?


您正在寻找的功能称为解构而且,就其一般形式而言,它远远超出了元组拆包的范围。我经常发现自己希望 Scala 拥有它,因为它是模式匹配语法的自然扩展:

def first((f: Int, l: Int)) = f
def displayName(Person(first, last)) = last + ", " + first

解构is(某种程度上)以变量/值定义的形式存在:

val (f, l) = tuple
val Person(first, last) = person

不幸的是,有一些type http://www.scala-lang.org/node/8344 safety https://issues.scala-lang.org/browse/SI-140 issues https://issues.scala-lang.org/browse/SI-4670围绕这样的定义,我认为您不太可能很快在参数列表中看到解构。

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

Scala 中的参数列表会直接支持元组解包吗? 的相关文章

随机推荐

  • iPhone 中的 jpg 图像和 2x 图像

    我正在开发 iphone 应用程序并定位iOS 4 0或稍后 我正在尝试将图像添加到 UIImageView 并且图像位于jpeg格式 这就是我到目前为止所做的 UIImageView bgImageView UIImageView all
  • Div 溢出滚动到底部:可能吗?

    如果我有一个div with overflow auto使其成为可滚动的div我加载它的信息会形成一个重要的滚动区域 有没有一种方法可以在我加载信息时 div显示底部结果 或者基本上滚动到底部 我见过 jQuery 解决方案 但这是在 HT
  • 如何让图片大小在滚动时平滑变化?

    我有带有大徽标的标题 我想在滚动超过 100px 后将其变小 这工作正常但不流畅 我怎样才能做到平滑 我的代码 function window scroll function if this scrollTop gt 100 header
  • AngularJS 登录表单与 ng-click 不起作用

    我在这个插件中写了一个基本的登录表单http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview 单击
  • 如何在改造多部分请求中发送对象数组

    I want to send array objects with multipart data I tried many ways but it is not working My issue with the contributor p
  • 如何为Android Studio构建模板项目

    我使用 Android Studio 我必须创建许多始终包含三个模块的项目 应用程序 应用程序 图书馆 图书馆 壁纸 应用程序 我知道可以使用 ADT 来构建活动模板等 我找到了一些类似的教程this https android arsen
  • 在 C# 中使用 XSLT 将 RVML 转换为 SVG

    我有一个 C Web 应用程序 它使用以下命令生成 SVG 代码拉斐尔 JS http www raphaeljs com 然后我需要将其转换为 PNG 以实现用户之间的一般互操作性 请参阅我之前的问题在这里 https stackover
  • 如何从首选项屏幕返回到主要活动?

    我有一项主要活动和一项偏好活动 在我的第一个活动中 我调用菜单并通过调用startActivityForResult继续preferenceActivity case R id settings startActivityForResult
  • TCP 数据偶尔会以错误的顺序接收且不完整

    我用 Java 创建了 TCP 服务器应用程序 并用 C 创建了客户端应用程序 当我发送数据时 客户端有时会乱序接收数据 有时部分会完全丢失 基本上 我在服务器 java 中使用的代码如下 已删除 ServerSocket welcomeS
  • 将同步方法更改为异步方法

    我在谷歌上搜索了很多并阅读了不同的菜鸟教程 但我认为我不明白正确的做法是什么 基本上 现有的同步代码会在服务器启动并运行时执行某些操作 有时 很少见 服务器需要更长的时间才能启动 因此我想将其包装在一些重试逻辑中 我构建了一个完全愚蠢的控制
  • 单向数据库同步

    经常需要将一个数据库中的主表中的数据同步到其他数据库 通常位于其他服务器上 中的克隆表 例如 考虑这样一种情况 后端系统管理库存数据 并且库存数据最终必须推送到作为网站应用程序一部分的一个或多个数据库 后端系统中的源数据高度规范化 有数十个
  • 如何强制文本框显示正在输入的内容?

    在我的 UWP 应用程序中 单击按钮 btnCre8NewMap 时我会调用 ContentDialog 这是相关的 XAML
  • 使用 BeautifulSoup 迭代 XML 来提取特定标签并存储在变量中

    我对编程相当陌生 一直在努力寻找解决方案 但我能找到的只是零碎的东西 没有真正的运气将它们组合在一起 我正在尝试使用BeautifulSoup4 in python刮一些xml并将文本值存储在变量中的特定标签之间 这些数据来自医学生培训计划
  • Android 支持 v23.1.0 更新破坏了 NavigationView 获取/查找标头

    我一直在使用v23 0 1支持库到目前为止没有任何问题 现在当我切换到新的v23 1 0我在抽屉布局中的小部件上得到一个空指针 mNavigationView NavigationView findViewById R id navigat
  • 蟒蛇基维 |标签文本上的阿拉伯文本

    当我尝试输入阿拉伯语文本时出现问题 我的代码是 import kivy from kivy app import App from kivy uix textinput import TextInput class TestApp App
  • SQL Server 2014 nvarchar(max) 结果的哈希字节为 nvarchar(max)

    使用 SQL Server 2014 我有一个表nvarchar max 称为的列 ASCII File 它可以包含许多 K 的 ASCII 文本文件 然后我想对该文件执行 MD5 哈希字节 并且生成的哈希值应始终为 20 字节 好吧 当我
  • 如何在 MySQL 中搜索“邻近词”?

    例如 我想搜索一个词 marple 这应该返回具有接近或精确单词的行 例如 marble maple marple ETC 在mysql查询中如何实现呢 或者更好地给出建议 如果有的话 SOUNDEX 函数 http dev mysql c
  • 如何使用具有字典数组的键解析字典

    UPDATE 8 31 12 所以现在我需要根据 isReservable 1遍历字典数组 然后显示 begin 我只是想获取每个字典的数组的内容 我可以从那里开始 暂时 以下是我尝试过的 感谢大家的帮助 我每天都学到更多 来自 php 页
  • 在 TFS 描述字段中嵌入文本

    我有一个关于描述字段的 TFS 问题 目前 TFS 描述字段是一个空字段 用户可以在其中添加任何信息 是否可以嵌入某种类型的文本 示例 创建新错误时 TFS 描述字段为空 相反 我想在描述字段中填充以下内容 配置和日志 版本及环境 复制步骤
  • Scala 中的参数列表会直接支持元组解包吗?

    在 Haskell 中你可以这样写 x Int Int gt Int x p s p 在 Scala 中你可以这样写 def x a Int Int a 1 or def x a Int Int a match case p s gt p