问题标签 [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 投票
4 回答
43488 浏览

java - 用Scala中的Option包装Java中的空返回方法?

假设我有一个方法session.get(str: String): String,但你不知道它会返回一个字符串还是 null,因为它来自 Java。

有没有更简单的方法在 Scala 中处理这个而不是session.get("foo") == null?也许一些魔法适用ToOption(session.get("foo")),然后我可以用 Scala 的方式来对待它

0 投票
5 回答
22059 浏览

scala - 在理解中使用 List 组合选项会根据顺序给出类型不匹配

为什么这种构造会在 Scala 中导致类型不匹配错误?

如果我用 List 切换 Some 它编译得很好:

这也可以正常工作:

0 投票
2 回答
26961 浏览

scala - 如何将 Option[X] 的 Scala 集合转换为 X 的集合

我开始探索 Scala,我感兴趣的一件事Option是能够消除null相关错误的类型和承诺。

但是,我无法弄清楚如何将 的列表(或其他集合)转换为(显然过滤掉任何值为)Option[String]的集合。StringNone

换句话说,我如何从中得到:

...对此:

如果这对答案有任何影响,我正在使用 Scala 2.8。

0 投票
2 回答
940 浏览

scala - 将 AnyRef 装入选项的方法在哪里?

James Iry 的这篇博文中,他写道:

另外,Scala 有一个“选项”方法,可以将一个值提升为 Some(value) 或 None ,具体取决于它是否为空......

option我似乎在 scaladoc 的任何地方都找不到这种方法。

Iulian Dragos的 gdata 客户端项目包含一个可能是 James 所指的方法。

请指出我在哪里可以在 scaladoc 中找到此方法。

PS我有一个看起来像这样的方法:

对于是否应该将其更改为,我有两种想法:

因为客户端可以使用null. 目前,在第一个实例中,我希望有一个字符串参数,并且我使用option前面提到的方法手动将其装箱。

0 投票
2 回答
5363 浏览

scala - 为什么 Option 的 orNull 方法有这个多余的隐式参数?

我想知道这里的原因是什么(implicit ev: Null <:< A1)

不会

考虑到它甚至似乎不适用于像这样的值类型就足够了

做?

Option源代码

0 投票
4 回答
9126 浏览

scala - 为什么 Option 没有 fold 方法?

我想知道为什么scala.Option没有fold定义这样的方法:

相当于

没有比使用map+更好的getOrElse吗?

0 投票
5 回答
4826 浏览

scala - Scala:具有两个或更多选项的映射

基本上,我正在寻找最类似于 scala 的方式来执行以下操作:

这给出了正确的输出:

然而,要总结两个以上的选项,我必须使用太多if的 s 或使用某种循环。

编辑-1:

在写这个问题时,我想出了一个答案:

对于我没有经验的人来说,这看起来非常地道。这甚至可以使用两个以上的值。然而,是否可以在不转换为列表的情况下做同样的事情?

编辑-2:

我最终得到了这个解决方案(感谢ziggystar):

编辑-3:

感谢Landei的另一种选择:

0 投票
2 回答
1729 浏览

scala - Scala Option[(A, B)] 模式匹配

我正在编写一个 Java 代码生成器。

我有一个不可变的 Map ,其中包含从java.sql.Types[Int] 到元组的映射,(String, String)其中第一个值是 Java 类型,第二个值是 Java 包,如果默认情况下不导入该类型,则从该包中导入该类型(java.lang):

我正在尝试在搜索此地图时进行模式匹配,数据库元数据dataType中的值在哪里:java.sql.Types

case编译器在第一个(以 开头)给我一个错误case Some(jType, Some(iType))error: wrong number of arguments for <none>: (x: (java.lang.String, Option[java.lang.String]))Some[(java.lang.String, Option[java.lang.String])]

我不确定出了什么问题。

0 投票
1 回答
2073 浏览

scala - 嵌套的 Scala 匹配器为什么 Some(Some(1),1) 不能匹配?

嵌套匹配似乎不起作用,这是一个奇怪的限制。

行为示例如下:

这有效:

现在,我只是一个笨蛋还是有更好的方法来实现这一点?

0 投票
3 回答
679 浏览

scala - 哪些 Scala 方法返回 null 而不是 Option,为什么?

我想知道标准库是否是完全null免费的,如果不是,我会感兴趣存在哪些合理的用例,其中返回null比返回某些Option实例更可取。