从 Option[] 包装的对象中读取多个变量

2024-01-03

我有一个变量obj: Option[MyObject]并希望从中提取多个变量 - 如果未设置对象,则应使用默认值。

目前我是这样做的:

val var1 = obj match {
    case Some(o) => e.var1
    case _ => "default1"
}
val var2 = obj match {
    case Some(o) => e.var2
    case _ => "default2"
}
...

这是非常冗长的。我知道我可以这样做:

val var1 = if (obj.isDefined) obj.get.var1 else "default1"
val var2 = if (obj.isDefined) obj.get.var2 else "default2"

这看起来仍然很奇怪。我知道我可以使用一个大匹配并返回一个值对象或元组。

但我想要的是与此类似的东西:

val var1 = obj ? _.var1 : "default1"
val var2 = obj ? _.var2 : "default2"

这可能吗somehow?


这个怎么样?

obj.map(_.var1).getOrElse("default1")

或者,如果您喜欢这种风格:

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

从 Option[] 包装的对象中读取多个变量 的相关文章

  • Spark:替换嵌套列中的空值

    我想更换所有n a以下数据框中的值unknown 它可以是scalar or complex nested column 如果它是一个StructField column我可以循环遍历列并替换n a using WithColumn 但我希
  • Scala 中奇怪的类型不匹配

    我希望这个问题还没有在其他地方得到解答 在这里没有找到答案 在我的本地化系统中 我有一个名为 Language 的类 class Language val name String dict HashMap String String def
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • 通用 scala 函数,其输入是变量数量的函数

    我想定义一个函数f需要另一个函数g 我们需要g采取采取n双打 对于某些固定n 并返回一个 Double 函数调用f g 应该返回具体值n 例如 f Math max 2因为 Math sin 具有类型 Double Double gt Do
  • 减少/折叠幺半群列表,但减少器返回任一

    我发现自己遇到过几次这样的情况 我有一个减速器 组合 fn 如下所示 def combiner a String b String Either String String a b asRight String 它是一个虚拟实现 但 fn
  • 为什么 Scala 中的隐式类必须驻留在另一个特征/类/对象中?

    基于scala文档 http docs scala lang org overviews core implicit classes html http docs scala lang org overviews core implicit
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 HList 获取元素

    我尝试了 HList 并按预期进行了以下工作 val hl 1 foo HNil val i Int hl 0 val s String hl 1 但是 我无法让以下代码正常工作 让我们暂时假设对列表进行随机访问是一个聪明的主意 class
  • 对两种类型之间的二元关系进行建模

    有企业 也有人 用户可以对某个企业点赞或发表评论 但效果是一样的can not发生在一个人身上 当用户发布有关某个企业的内容或对其点赞时 该企业就被称为target喜欢或帖子 trait TargetingRelation Targetin
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 在 Spark 结构化流 2.3.0 中连接两个流时,左外连接不发出空值

    两个流上的左外连接不发出空输出 它只是等待记录添加到另一个流中 使用套接字流来测试这一点 在我们的例子中 我们想要发出具有 null 值的记录 这些记录与 id 不匹配或 且不属于时间范围条件 水印和间隔的详细信息如下 val ds1Map
  • 如何执行仅匹配正则表达式的测试?

    在 sbt 0 10 1 中 我经常使用test only缩小我的测试数量 sbt gt test only com example MySpec 但是 我想缩小范围 以便只运行名称 描述与正则表达式匹配的测试 是否有一些语法可以实现这样的
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • XML 创建 - 错误:带有替代方案的重载方法构造函数 UnprefixedAttribute

    scala gt val count 7 count Int 7 将其放入 XML 属性中会出现错误 scala gt val x
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客

随机推荐

  • 结合绑定到 tableView 处理网络错误(Moya、RxSwift、RxCocoa)

    我目前正在使用 Moya 发出网络请求 我已经从示例项目之一实现了以下内容 https github com DroidsOnRoids RxSwiftExamples tutorials https github com DroidsOn
  • PHFetchResults 日期过滤器未生成时间范围的正确结果

    我正在尝试从照片库中获取两个日期范围内的图像我成功获取图像 https stackoverflow com questions 39587405 how to fetch images from photo library within r
  • .emacs 中区分大小写的 setq 没有效果

    我的 emacs 文件中有很多自定义内容 字体 颜色 窗口大小 键绑定等 所有这些都有效 然后在最后 我只是添加了一个 setq case fold search nil 这是一个变量 当设置为nil应该使搜索在所有 emacs 模式下区分
  • pandas.errors.EmptyDataError:没有要从文件中解析的列

    我创建了一个列表数据类型 它具有三个文件夹的路径 其中每个文件夹都有很多 txt 文件 我试图通过使其成为 pandas 数据框来处理文件夹中的每个文件 但我收到了列出的错误 CODE for l in list for root dirs
  • 在新窗口中打开 Chrome(Chrome 应用)

    我正在尝试创建一个 chrome 应用程序 当我单击按钮时 它会打开一个新的 chrome 窗口 目前它只是打开一个新选项卡 html
  • 如何检查一个值的位奇偶校验是偶数还是奇数?

    一个值有偶校验 https en wikipedia org wiki Parity bit如果它有偶数个 1 位 如果某个值具有奇数个 1 位 则该值具有奇数奇偶校验 例如 0110具有偶数奇偶性 并且1110有奇校验 我必须回来1 if
  • Safari:在卸载之前

    前提条件 你应该在狩猎10 您好 我在请假时遇到困难 保持确认框在不同浏览器中显示在我的页面上 请前往https www biznessapps com cms https www biznessapps com cms 并使用以下凭据登录
  • 在 Chrome 中使用 window.location.reload 从缓存加载和哈希片段不起作用

    我需要用 Javascript 重新加载页面 我用window location reload为了这个目的 现在 我在 Chrome 中观察到一个奇怪的行为 Chrome 总是连接到服务器并询问文档是否被修改 虽然一个304 Not Mod
  • 重新创建 iOS 7 日历 UIView 动画

    每个人都知道 iOS 7 日历应用程序中全新的精彩动画 您可以在这段短视频中看到它们 http vimeo com 69247779 http vimeo com 69247779 我会重新创建类似的东西 创建一个 模式 矩形 当用户点击时
  • 在 ios 7.1 中自定义按钮形状

    苹果已经添加了纽扣形状 http www todaysiphone com 2014 03 switch button shapes ios 7 1 iOS 7 1 中的功能 但我需要让它在我的应用程序中禁用或更改其默认颜色 形状以匹配我的
  • 关于 Android 活动

    我面临着一个与相关的大问题Activity 我的场景如下 我启动活动 A 单击一个按钮 然后从图库中选择一张图像 然后在onActivityResult我打了电话startActivity B 现在 在我的活动 B 中 A 中选择的图像已显
  • AVL树的最小节点数?

    我知道AVL树中最小节点数的公式是 S h S h 1 S h 2 1 然而 我真的不知道如何使用这个函数 假设我们的 AVL 高度为 6 答案告诉我最小值 7 4 1 12 但是你如何得到这个数字呢 我的意思是 当你插入 6 时 不是 6
  • 函数对象属性 __kwdefaults__ 有什么用?

    函数对象有属性 defaults and kwdefaults 我发现如果一个函数有一些默认参数 那么它们将作为一个元组放入 defaults but kwdefaults is None 何时使用属性 kwdefaults def foo
  • 尝试使用 os.makedirs 时出现“OSError:[Errno 17] 文件存在”[重复]

    这个问题在这里已经有答案了 我在集群系统上有几个从 Python 并行运行的线程 每个Python线程输出到一个目录mydir 每个脚本在输出之前检查是否mydir存在 如果不存在则创建它 if not os path isdir mydi
  • 汇编“下面”是否有编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 防止 CHARACTER VARYING 字段中出现空字符串

    我正在使用 PostgreSQL 并希望阻止某些必需的 CHARACTER VARYING VARCHAR 字段允许空字符串输入 这些字段还需要包含唯一值 因此我已经使用了唯一约束 但是 这并不能阻止原始 唯一 空值 基本示例 其中用户名需
  • 如何使用 MFC 应用程序 (C++ Visual Studio 2010) 中的按钮更改图像的可见属性?

    我正在尝试制作一个程序 当按下应用程序中某个名为 隐藏 的按钮时 图像就会消失 我知道在 Windows 窗体应用程序中它会是这样的 pictureBox1 gt Visible true false 但该代码在 MFC 中不起作用 我在M
  • 函数指针有什么用,我将如何使用它们?

    我知道我可以使用函数指针 有人可以解释为什么要使用它们以及如何使用它们吗 简短的示例代码对我非常有帮助 一个简单的情况是这样的 根据您的业务逻辑 您有一系列操作 函数 您有一个哈希函数 可以将输入问题减少到业务逻辑函数之一 干净的代码将具有
  • 可以在 Node.JS Express 应用程序中插入中间件吗

    有没有办法在 Express 堆栈中注入中间件 我的意思是我想让我的 app js 设置主中间件链 然后调用传递应用程序实例的其他模块 他们可能想要插入更多中间件 例如想要在正确位置添加护照的身份验证模块 你一定可以通过你的app对象其他模
  • 从 Option[] 包装的对象中读取多个变量

    我有一个变量obj Option MyObject 并希望从中提取多个变量 如果未设置对象 则应使用默认值 目前我是这样做的 val var1 obj match case Some o gt e var1 case gt default1