问题标签 [scala-option]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
182 浏览

java - 如何在 Java 代码中将 Java 函数应用于 Scala 选项

给定 Scala 选项Option[String],Option[Long]Option[Boolean]给定 Java 消费者String, longboolean我想在 Java 代码中通过静态类型检查干净地应用这些。问题是,Option[Long]Option[Boolean]成为Option<Object>Java 代码,所以我需要一个未经检查的类型转换:

我发现的另一个解决方案是针对每种原始类型的专用 Scala 函数:

但实际上,在 Java 方面,后两者看起来acceptIfDefinedLong(Option<Object>, Consumer<java.lang.Long>)如此,实际上并没有严格的类型检查。

  • 我怎样才能做到这一点?
  • 我如何概括这一点?
  • 我怎么能用Java写这个?
  • 有可能吗?

必须可以从 Java 调用,并且不能有未经检查的强制转换。

0 投票
1 回答
663 浏览

scala - 对于 Option[T] 类型,让 play-json 将空字符串读取为 None

我正在尝试使用 play-json 从 GitHub API 解析 json,并merge_commit_sha在 Pull Requests 上遇到了该字段的问题(顺便说一下,我知道该字段已被弃用,但不想在此解析问题中讨论这个问题!) . 不幸merge_commit_sha的是,在某些情况下,字段会以空字符串的形式返回:

这是在我的案例类中声明该字段的方式:

我有一个implicitFormat[ObjectId],它不能容忍空字符串,因为这不是Git 哈希ID 的有效值。我还使用了Read[PullRequest]我想继续使用的 play-json macro-generated ,而不是单独声明拉取请求中每个字段的读取。

由于我已将该字段声明为选项,因此我希望"merge_commit_sha": ""将其读取为 value None,但这不是当前发生的情况 - 存在一个字符串,因此Format[ObjectId]调用了 并返回一个JsFailure.

我尝试过的一件事是声明具有所需行为的隐式Format[Option[ObjectId]],但它似乎没有被宏生成的Read[PullRequest].

0 投票
1 回答
284 浏览

java - 在 Scala 中使用通用数据类型值定义 Map

我必须在 Scala 中构建 Map,以便收集从调用 Java 代码的所有数据。可能的值为StringInteger和。有没有办法在 Scala 中表示这个地图?我试图让 Option 如下,但不确定它的类型应该是什么。Doublenull

0 投票
3 回答
6226 浏览

scala - Scala for comprehension with future and options

I have two functions that return Future[Option[String]] and I need to combine the two strings into one string.

I want the output to be either combination of two strings and footer: "file one file two add more data to the file" or default when one or both of the Futures return None: "Files not found add more data to file".

How can this be achieved?

Compiler error:

0 投票
3 回答
13501 浏览

scala - Scala中带有选项值或默认参数的方法调用

我对 Scala 还很陌生,偶然发现了一个一直困扰我的小问题。假设有一些带有默认参数的方法

和一个选项val opt: Option[String]。如何使用选项值(如果已定义)或默认参数调用此方法?我的意思是尽管有明显的解决方案

并且必须使用(可能很长)对象链两次键入方法?更不用说有多个可选/默认参数...


我能想到的只是无用的帮手

但是当无法在高阶函数中提及默认参数时……就是这样。让我想起了 Java 的糟糕过去,方法重载会产生同样的问题。

0 投票
3 回答
1538 浏览

scala - scala合并选项序列

想要合并val A = Option(Seq(1,2))val B = Option(Seq(3,4))产生一个新的选项序列

val C = Option(Seq(1,2,3,4))

这个

val C = Option(A.getOrElse(Nil) ++ B.getOrElse(Nil)),

似乎比

val C = Option(A.toList.flatten ++ B.toList.flatten)

但是有更好的方法吗?我是对的,getOrElse它比 更快更轻toList.flatten吗?

0 投票
1 回答
3656 浏览

scala - 从 Scala 中的 Option[..] 获取 java.io.Serializable

(几周前刚开始使用 Scala,请耐心等待)

在这里阅读/试用这篇小文章,遇到了一些惊喜

http://danielwestheide.com/blog/2012/12/19/the-neophytes-guide-to-scala-part-5-the-option-type.html

按照描述定义案例类用户后:

,这是我观察到的结果:

前两个是我所期望的,但后两个不是;现有用户和非现有用户的情况。为什么突然出现 java.io.Serializable?

0 投票
2 回答
271 浏览

scala - 如何在 Scala 中打开 Option[Map(A,B)]?

我已经做了足够多的 Scala 来了解丑陋的代码是什么样的。观察:

预期输出:

这是我的 Tyler Perry 代码,由 M. Knight Shama Llama Yama 执导:

但是,当 sm 为 None 时,这不起作用:-(。我收到一条错误消息,说 Nothing 没有“过滤器”方法(它认为我们正在在线过滤(k,v) <- m)谢谢!

0 投票
1 回答
2348 浏览

scala - Spark 2 选项数据集

我有一个字符串数据集,我使用可能失败的函数将其解析为案例类的数据集(例如,如果我尝试解析的数据不可用)。出于这个原因,该函数返回一个选项(Scala)。所以我最终得到了一个 Option[MyCaseClass] 的数据集。

Spark 似乎接受了该 Dataset 并对其进行处理,但None如果解析失败,它不会返回 a 而是返回我 a Some(MyCaseClass(null, null...))

这是一个这样做的代码示例:

这是一个说明案例的笔记本https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/4480125715694487/1289561535151709/7956941984681624/latest.html

我的猜测是,在序列化然后反序列化 Option 值时 Spark 使用 Some() 构造函数,而不是检查 Option 是 Some 还是 None。

我显然可以在我的对象周围创建一个包装器,例如MaybeArticle(article: Option[Article]),但我想知道 Spark 是否可以正确处理 Options 数据集?

0 投票
1 回答
595 浏览

scala - 从 Scala 中的未来选项获取未来对象

我是 Java 的 Scala 新手,所以函数式编程对我来说仍然有点难以理解。我在 Play 框架中有一个项目。我需要查询数据库以获取带有 id 的行并将它们显示在 html 模板中。

这是我的代码

getDocumentByID返回一个Future[Options[Document]]对象,但是我的results模板需要Array[Document],所以我试图将其转换Future[Options[Document]]Array[Document]

我拥有的当前代码是最接近的,但它仍然无法编译。这是错误: