问题标签 [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.
java - 如何在 Java 代码中将 Java 函数应用于 Scala 选项
给定 Scala 选项Option[String]
,Option[Long]
和Option[Boolean]
给定 Java 消费者String
, long
,boolean
我想在 Java 代码中通过静态类型检查干净地应用这些。问题是,Option[Long]
并Option[Boolean]
成为Option<Object>
Java 代码,所以我需要一个未经检查的类型转换:
我发现的另一个解决方案是针对每种原始类型的专用 Scala 函数:
但实际上,在 Java 方面,后两者看起来acceptIfDefinedLong(Option<Object>, Consumer<java.lang.Long>)
如此,实际上并没有严格的类型检查。
- 我怎样才能做到这一点?
- 我如何概括这一点?
- 我怎么能用Java写这个?
- 有可能吗?
必须可以从 Java 调用,并且不能有未经检查的强制转换。
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]
.
java - 在 Scala 中使用通用数据类型值定义 Map
我必须在 Scala 中构建 Map,以便收集从调用 Java 代码的所有数据。可能的值为String
、Integer
和。有没有办法在 Scala 中表示这个地图?我试图让 Option 如下,但不确定它的类型应该是什么。Double
null
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 Future
s return None
: "Files not found add more data to file".
How can this be achieved?
Compiler error:
scala - Scala中带有选项值或默认参数的方法调用
我对 Scala 还很陌生,偶然发现了一个一直困扰我的小问题。假设有一些带有默认参数的方法
和一个选项val opt: Option[String]
。如何使用选项值(如果已定义)或默认参数调用此方法?我的意思是尽管有明显的解决方案
并且必须使用(可能很长)对象链两次键入方法?更不用说有多个可选/默认参数...
我能想到的只是无用的帮手
但是当无法在高阶函数中提及默认参数时……就是这样。让我想起了 Java 的糟糕过去,方法重载会产生同样的问题。
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
吗?
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?
scala - 如何在 Scala 中打开 Option[Map(A,B)]?
我已经做了足够多的 Scala 来了解丑陋的代码是什么样的。观察:
预期输出:
这是我的 Tyler Perry 代码,由 M. Knight Shama Llama Yama 执导:
但是,当 sm 为 None 时,这不起作用:-(。我收到一条错误消息,说 Nothing 没有“过滤器”方法(它认为我们正在在线过滤(k,v) <- m
)谢谢!
scala - Spark 2 选项数据集
我有一个字符串数据集,我使用可能失败的函数将其解析为案例类的数据集(例如,如果我尝试解析的数据不可用)。出于这个原因,该函数返回一个选项(Scala)。所以我最终得到了一个 Option[MyCaseClass] 的数据集。
Spark 似乎接受了该 Dataset 并对其进行处理,但None
如果解析失败,它不会返回 a 而是返回我 a Some(MyCaseClass(null, null...))
。
这是一个这样做的代码示例:
我的猜测是,在序列化然后反序列化 Option 值时 Spark 使用 Some() 构造函数,而不是检查 Option 是 Some 还是 None。
我显然可以在我的对象周围创建一个包装器,例如MaybeArticle(article: Option[Article])
,但我想知道 Spark 是否可以正确处理 Options 数据集?
scala - 从 Scala 中的未来选项获取未来对象
我是 Java 的 Scala 新手,所以函数式编程对我来说仍然有点难以理解。我在 Play 框架中有一个项目。我需要查询数据库以获取带有 id 的行并将它们显示在 html 模板中。
这是我的代码
getDocumentByID
返回一个Future[Options[Document]]
对象,但是我的results
模板需要Array[Document]
,所以我试图将其转换Future[Options[Document]]
为Array[Document]
我拥有的当前代码是最接近的,但它仍然无法编译。这是错误: