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

scala - 期权与未来

我正在构建具有惊人数量抽象的 ubercool 应用程序。现在我要设计过度设计的EntityGetService。

我想要的第一件事是很多抽象类型,让我们这样说:

这里的 CONTAINER 是包含(或不包含)请求实体的类型。与 Option[ENTITY] 非常相似。但我想要的第二件事是,CONTAINER 也可以是 Future[ENTITY]。

所以我真的想写这样的特质:

并以下列方式指定它:

有没有办法在不重新扩展或混合选项和未来的情况下做到这一点?

看起来 Option 和 Future 有一些共同点(它们都是容器)。它与单子有关吗?

或者这只是我失眠的产物?

0 投票
1 回答
16351 浏览

scala - 如何从 Scala 的 Collection 中的索引中获取选项?

有没有办法,仅使用 Scala 集合 API,在尝试通过索引获取元素时获取 List 中的选项?

我正在寻找这个功能的等价物,它存在吗?

谢谢

0 投票
2 回答
138 浏览

scala - 为什么这两个代码块对于 Option 类是等价的?

在编写的 Option 类文档中,以下两个示例是等效的:

但我不明白它们如何等效:在第一个代码块request getParameter "name"返回类型实例Option[String],但在第二个代码块语句name <- request getParameter "name"返回类型实例String(我假设因为下一个语句调用变量trim上的方法(未定义))。nametrimOption[String]

0 投票
7 回答
15607 浏览

scala - 我如何(最好)将选项转换为尝试?

我如何(最好)将方法调用返回的 Option 转换为 Try (根据偏好,尽管 Either 或 scalaz\/甚至 Validation 可能都可以),包括在适当的情况下指定 Failure 值?

例如,我有以下代码,感觉很笨拙,但至少可以完成(大部分)工作:

感觉应该有一种方法可以将最终匹配变形为 map 或 flatMap 或类似的构造,并合并到前面的理解中。

此外,如果与 BRef 检查失败相比,从 ARef 返回 Option[A] 的调用失败(返回 None),我希望能够指定不同的失败消息(我只关心知道失败的一个原因,因此 scalaz Validation 感觉并不理想)。

这是使用单子变压器的合适地方吗?如果是这样,scalaz 是否提供合适的,或者有人可以举例说明它的外观吗?

0 投票
2 回答
108 浏览

scala - 了解期权方法

对于以下map签名,我是否正确阅读?

源代码 - Scala 中的 FP

[B]意味着只有类型的对象B可以调用这个函数

f: A => B意味着它接受 1 个参数,一个返回相同类型的函数B

我对这个函数的一个具体例子很模糊。

0 投票
4 回答
156 浏览

scala - 在 Option[X] 上使用 if 而不是 match

我想用 if 语句替换下面的匹配,最好比这更简洁。我个人发现 if's 更容易在脑海中解析。

是否有等效的 if 语句或其他产生等效结果的方法?

0 投票
3 回答
338 浏览

scala - 斯卡拉选项 ||

我想在scala中获得几个选项之一的值,如下所示:

但我想知道为什么没有||为 Option 定义运算符?有没有更惯用的方式来做到这一点?

0 投票
4 回答
1467 浏览

scala - 如何展平 Try[Option[T]]

我想将 a 展平Try[Option[T]]为 aTry[T]

这是我的代码

有没有更好的办法 ?

0 投票
5 回答
8455 浏览

scala - 更优雅的写法 if(list.nonEmpty) Some(list.max) else None?

List.max根据某些排序返回列表的“最大”元素......但如果列表为空,您将收到java.lang.UnsupportedOperationException: empty.max异常。我真的不喜欢用 if 语句或匹配或其他东西乱扔代码。我想要类似headOptionfor 的东西max,但我没有看到这样的方法。获得等价物的最优雅方法是list.maxOption什么?

0 投票
3 回答
1287 浏览

scala - 覆盖 Scala 中 Option[_] 的 toString 行为

我宁愿只看到 Option 的值(如果它不是 None),而不是以下额外的 Some() 噪音:

现在,我可以为 List[Option[_]] 编写一个处理此问题的方法。但是还有许多其他结构中会出现 Options - 所以这种显式寻址每个结构的方法很麻烦。

由于隐含的优先级较低,以下代码将被忽略:

令人担忧的是 - 尽管实现了例如以所需方式处理此问题的 toString(List[Option_]]) 方法,但这仍然是一次性的。怎么样一个

看来我们仍然需要为每个集合类型实现一个显式的 toString() ..