为什么大写字母不能用于定义值的模式匹配?

2023-11-27

为什么我可以使用小写字母作为名称:

val (a, bC) = (1, 2)

(1, 2) match {
  case (a, bC) => ???
}

并且不能使用大写字母:

/* compile errors: not found: value A, BC  */
val (A, BC) = (1, 2)

/* compile errors: not found: value A, BC  */
(1, 2) match {
  case (A, BC) => ???
}

我在用着scala-2.11.17


因为 Scala 的设计者更喜欢允许以大写字母开头的标识符像这样使用(并且允许两者都会令人困惑):

val A = 1

2 match {
  case A => true
  case _ => false
} // returns false, because 2 != A

请注意,使用小写你会得到

val a = 1

2 match {
  case a => true
  case _ => false
} // returns true

because case a绑定一个new变量称为a.

一种非常常见的情况是

val opt: Option[Int] = ...

opt match {
  case None => ... // you really don't want None to be a new variable here
  case Some(a) => ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么大写字母不能用于定义值的模式匹配? 的相关文章

  • 案例类和案例对象之间的区别?

    我正在学习 Scala 和 Akka 并且在最近的查找中solution https stackoverflow com questions 22770927 waiting for multiple results in akka 我发现
  • 从继承的受保护 Java 字段创建公共访问器

    我怎样才能完成以下工作 class Foo extends javax swing undo UndoManager increase visibility works for method override def editToBeUnd
  • 在 Scala 中调用反射案例类构造函数

    我可以通过静态反射获取案例类的默认构造函数 val symbol currentMirror classSymbol myObj getClass typeSignature typeSymbol asClass val ctor symb
  • Scala 2.10,它对 JSON 库和案例类验证/创建的影响

    显然 在 Scala 2 10 中我们得到了改进的反射 这将如何影响 lift json jerkson sjson 和朋友 此外 我们能否期望在不久的将来 Scala 中会出现内置的 JSON 语言功能 如 Groovy 的出色 GSON
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • ';'预期但发现“导入” - Scala 和 Spark

    我正在尝试使用 Spark 和 Scala 来编译一个独立的应用程序 我不知道为什么会收到此错误 topicModel scala 2 expected but import found error import org apache sp
  • Spark:出现心跳错误后丢失数据

    我有一个在 Spark 集群上运行的 Python 程序 有四个工作线程 它处理一个包含大约 1500 万条记录的巨大 Oracle 表 检查结果后发现大约有600万条记录没有插入 我的写入功能如下 df write format jdbc
  • 如何从字符串列中提取数字?

    我的要求是从列中的评论列中检索订单号comment并且总是开始于R 订单号应作为新列添加到表中 输入数据 code id mode location status comment AS SD 101 Airways hyderabad D
  • 以编程方式启动 Scala REPL?

    我想从命令行启动 Scala Swing 应用程序 然后在应用程序启动后 放入 Scala REPL 中以用作控制界面 理想情况下 我还想预先绑定一些变量名称 更好的是使用 REPL 的 Java2D 终端模拟器 但我找不到任何合适的东西
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 在 Akka 中配置嵌套 Router

    我有一些嵌套的路由器 应创建它FromConfig 我想要的是这样的 test akka actor deployment worker router round robin nr of instances 5 slave router b
  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • 为什么 Scala 中的隐式类必须驻留在另一个特征/类/对象中?

    基于scala文档 http docs scala lang org overviews core implicit classes html http docs scala lang org overviews core implicit
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • 更改 build.sbt 自定义任务中的版本

    我在 build sbt 中定义了一个自定义任务 val doSmth taskKey Unit smth doSmth version 1 0 SNAPSHOT 但它不会改变版本 我真正想要的是自定义 sbt 发布任务 它将始终将相同的版
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • 具有上限的联合类型

    我正在遵循这个问题的公认答案中提出的技术如何定义 类型析取 联合类型 https stackoverflow com questions 3508077 does scala have type disjunction union type
  • Play框架:单属性案例类的JSON读取

    我正在尝试为包含单个属性的案例类创建隐式 JSON Reads 但收到错误 Reads Nothing 不符合预期类型 这是代码 import play api libs functional syntax import play api

随机推荐

  • 路由在 Symfony 3.4 中不起作用

    我使用以下命令创建了一个新的 Symfony 3 4 项目 composer create project symfony skeleton my project 之后我添加了以下组件 composer require twig compo
  • 如何在U-Boot和Linux内核中添加自定义的ATAG变量?

    我要添加定制atagU Boot 和 Linux 内核中的变量 我怎样才能做到这一点 有没有什么程序可以添加ATAG变量在U Boot and Linux 最新的 Linux 内核正试图废弃ATAGS with 设备树 但是 那setup
  • 如何像 Instagram 和 Vine 一样在 ListView 中播放视频?

    我是 Android 开发新手 我正在尝试在列表视图中播放多个视频 目前 每个列表视图行项目都是一个视频视图 这种方法不起作用 因为当我开始滚动时 VideoViews 表现异常 我研究过here here here并发现VideoView
  • 获取绘图的只读属性名称列表

    如果要通过属性结构复制绘图 则需要过滤掉只读属性 例如 Annotation BeingDeleted Parent Type 有没有办法获取对象的只读属性列表 该问题源自一个相关问题 如何从绘图处理程序中绘图 我开始研究上一个问题 尝试动
  • 按行比较矩阵与向量中的元素

    我想将矩阵的值与相应的向量进行比较 比较应该按行进行 矩阵示例 ret TLT VTI 1995 01 20 0 005649718 0 004461441 1995 01 23 0 002840909 0 002560820 1995 0
  • 如何在 AWS Elastic Beanstalk 上使用 Resque 运行 Rails 后台作业?

    我正在运行我的 Rails 应用程序AWS 弹性豆茎平台 它运行具有 Auto Scaling 和 Elastic Load Balancing 的单个 EC2 实例 我想知道怎么跑resque delayed job or sidekic
  • mysql联合不同列数

    我知道联合查询必须具有相同数量的列 我正在尝试从表中获取结果comments以及表中的结果strings 它有多个连接 我如何正确地做到这一点 我还没有测试过 因为我知道我会收到不同数量的列的错误 这是我试图合并的两个查询 查询1 字符串
  • 如何使用TreeStore或TreeEditor组件更新数据?

    我使用 tree Panel 和 TreeStore 组件 我使用 JSON 文件来存储我的数据 但我想知道如何使用 TreeStore 升级我的数据 我解释我的问题 我的页面上有 2 个组件 Tree Panel用TreeStore和Pa
  • LinkedIn 的访问令牌更新流程可以在服务器上执行吗?

    在 Facebook 的 Graph API 中 一旦我们初步验证了用户身份 我们就可以直接与 API 从服务器 进行交互 以获得长期存在的页面访问令牌 这个长期存在的页面访问令牌永远不会过期 https developers facebo
  • 在 python opencv 中为像素着色

    我需要为图像中的像素着色 我使用opencv和python 我试过img x y 255 255 255 给一个上色pixel x y 但它不会工作 这其中是否有什么错误呢 你能建议任何方法吗 提前致谢 img x y 255 255 25
  • IF EXISTS UPDATE ELSE INSERT 语法错误

    我正在使用由我的 ISP 托管的 MySQL 5 1 这是我的查询 mysql query IF EXISTS SELECT FROM licensing active WHERE title 1 title 1 THEN BEGIN UP
  • 从内容页设置母版页上的属性值

    每次加载页面时 我都需要将数据传递给母版页中的变量 我在每个内容页面上设置了一个RequiredRoles 字符串 定义了访问该页面所需的角色 在我的母版页上 我有一种方法可以获取该数组 并检查当前用户是否属于这些角色中的一个或多个 我将如
  • 方法重载装饰器

    我正在尝试编写一个为 python 提供方法重载功能的装饰器 类似于中提到的PEP 3124 我编写的装饰器非常适合常规函数 但我无法让它适用于类中的方法 这是装饰器 class Overload object def init self
  • UI Router Extras 破坏了我的单元测试并出现意外结果错误?

    问题 安装 ui router extras 不是普通的 ui router 时 为什么我的测试失败 我该如何使用ui router extras我的测试仍然通过吗 如果你想快速安装 请使用 yeoman angular fullstack
  • 如何向单个客户端而不是所有客户端发送命令?

    我正在用 Indy 10 编写一个简单的客户端 服务器聊天程序 我的服务器 idtcpserver 向客户端发送一条命令 客户端应答 但是当连接多个客户端并且服务器发送命令时 all连接的客户端向服务器发送数据 如何向指定客户端而非全部客户
  • 限制 API 调用。仅允许我的移动应用程序

    我想要我的网络服务器接受请求起源仅从我的移动应用 由于移动应用程序是客户端应用程序 这意味着用户可以拥有二进制文件并反编译它 或者使用 Fiddler 等工具来解释 API 调用并重建它们 例如 在控制台应用程序中 所以我想要的是一种方法生
  • 有哪些好的方法可以防止 JavaScript 多人游戏作弊?

    想象一个带有滚动关卡的太空射击游戏 有哪些方法可以防止恶意玩家修改游戏以谋取私利 他可以做的服务器端难以限制的事情是自动瞄准 在可见区域外窥视 加速黑客攻击和其他事情 有哪些方法可以防止这种情况发生 假设服务器是任何语言 并且客户端通过 W
  • 故障模块:kernelbase.dll。应用程序崩溃

    I Have an application done in Net framework 3 5 C Net I installed the application in Windows 7 But while opening some fo
  • Enum.IsDefined 带有标记的枚举

    我目前正在看书C 4 0 简而言之顺便说一句 我认为这是一本很棒的书 即使对于高级程序员来说也可以作为很好的参考 我回顾了有关基础知识的章节 发现了一个技巧 可以在使用标记枚举时判断枚举中是否定义了某个值 书中指出 使用Enum IsDef
  • 为什么大写字母不能用于定义值的模式匹配?

    为什么我可以使用小写字母作为名称 val a bC 1 2 1 2 match case a bC gt 并且不能使用大写字母 compile errors not found value A BC val A BC 1 2 compile