问题标签 [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 回答
31 浏览

java - 从 Scala 案例类中创建 Java 对象:使用无(选项)

我正在尝试基于 Scala 案例类创建一个新的 Java 对象。一切似乎都很好,包括在第一次初始化中创建新对象,直到我需要填写类型的属性(其他类型Option[X]在哪里。它因参数而异)。X

在此属性具有值的情况下,我设法通过使用获得了值,Some.apply("value")但是当不存在值时,我有点不知所措。如果这是我会使用的 Scala 对象创建None,但这似乎不是 Java 的选项。

我试过使用Option.apply(null)scala.Nonenull没有成功。如何在 Java中给出None一个类型匹配的值?scala.Option<A>

0 投票
2 回答
1190 浏览

scala - 何时使用 Option#orNull

据我了解,我们应该避免null在 Scala 中使用。如果某些字段在逻辑上不具有“无值”,那么我们不应该使用Option以避免过度使用Options。

所以让我们看看代码。我有课

而且我 100% 确定该name字段不能null,因此我只使用StringOption[String].

问题是一些标准的 Scala 方法返回给我Option。(在我的情况下,该IterableLike#find方法返回选项)

所以问题是我如何Username包装后创建实例Option?稍微清楚一点,这是代码:

我听说这Option.get不是优雅的解决方案。orNull方法几乎相同get

0 投票
1 回答
270 浏览

scala - 模式匹配树状选项结构的更好实现

我知道输入 Option[... 看起来很疯狂,但这是我从 Spark 操作中收到的,所以我必须处理它。有没有更好的方法从这个复杂的元组/选项结构中获取所有迭代器选项?

0 投票
1 回答
238 浏览

scala - Scala - 选项类型 Var 操作

我正在做一个练习选项和线程的在线练习,我对这两个方面的经验都很少。在线练习附带了一个测试套件,所以现在我正在尝试让我的 Option 测试用例通过,然后再转到线程测试用例。

这是我的代码:

我已经closeAccount()注释掉了,因为它目前给我一个错误,说它期待 type Some[Int] instead of Option[Int]。考虑到我是如何初始化的,这是可以理解的balance。我不确定如何从中看到的值Some[Int]变为。NonecloseAccount()

任何帮助将不胜感激。先感谢您。

第一次编辑:我弄清楚我犯了什么愚蠢的错误incrementBalance。由于getBalance是 a val,因此它不会在操作后重新计算值。不过还是迷路了closeAccount()

0 投票
2 回答
6055 浏览

scala - Scala 选项类型未按预期推断

我正在编写一个函数来从JSONObject. 由于它是 JSON,输入名称的条目可能存在也可能不存在,因此该函数返回一个Option失败或值成功None时的值。函数编译失败,返回类型不正确。TryNULL

错误:

Expression of type Option[Any] doesn't conform to expected type Option[T]

有人可以告诉我我在这里做错了什么吗?另外,这是解决问题的惯用方式吗?

更新:

更改为以下作品

0 投票
1 回答
54 浏览

scala - map() 在选项上的行为

我试图通过 Play Combinators 将 JSONObject 实例映射到实际实例中。我能够使反序列化正常工作。问题是关于 map() 如何在 Option[JSONObject] 上工作的行为。

选项1:

不起作用,由于 _ 未正确解析而无法编译。编译器在对象上找不到 toString()。

选项2:

工作!有人可以告诉我为什么在作为函数参数的一部分进行转换时不传播默认变量的类型吗?

0 投票
8 回答
233 浏览

scala - 一起使用 Option 的两个实例的正确方法

当我有一个Option[T]实例时,很容易T使用诸如map()and之类的单子操作来执行任何操作flatMap()。这样我就不必检查它是否已定义或为空,并将操作链接在一起最终得到一个Option[R]for the result R

我的困难是是否有类似的优雅方式在两个Option[T]实例上执行功能。

让我们举一个简单的例子,我有两个 val,x类型yOption[Int]. 如果它们都被定义,或者如果只定义一个,并且None如果没有定义,我想获得它们中的最大值。

如果不涉及第一个isDefined内部的大量检查,如何优雅地编写这个?map()Option

0 投票
1 回答
428 浏览

java - 在 Java 中使用 Options 和 Scala Enumeration 实例化案例类

如果一个案例类同时具有枚举和选项,我似乎无法从 Java 实例化它。

在 Scala 中考虑以下内容:

并在 Java 中使用它们:

我在实例化时收到一个错误(至少 Eclipse 向我显示了一个错误),但a工作得很好!知道如何在 Java 中实例化吗???bcEnumOption

0 投票
2 回答
911 浏览

scala - 为什么用 Option 封装泛型方法调用 defers ClassCastException?

假设我有一个这样的数组*:

由于明显的原因而失败:

接下来让我们考虑以下类:

据我所知getAs,应该与前面的行为相同,apply后面跟着asInstanceOf.

令人惊讶的是,事实并非如此。单独调用时会抛出异常:

但是当包装Option成功时:

并且仅在我尝试访问包装值时失败:

那么这里会发生什么?它似乎是有限的ClassCastException,所以我想这与一些丑陋的事情有关,比如类型擦除。


*AnyasInstanceOf在那里模仿第 3 方代码的行为,所以请不要纠缠于此。

** 在 Scala 2.10.5、2.11.7 中测试

*** 如果您对上下文感兴趣,可以查看Using contains in scala - exception

****评论中链接的其他相关问题:

0 投票
5 回答
10770 浏览

scala - 什么时候应该使用 Option.empty[A] 什么时候应该在 Scala 中使用 None?

在 Scala 中,当我想将某些内容设置为 时None,我有两个选择:使用NoneOption.empty[A]

我应该只选择一个并始终如一地使用它,还是有时我应该使用一个而不是另一个?

例子: