gpt4 book ai didi

scala - 从 1 个元素的 Scala 集合中获取元素

转载 作者:行者123 更新时间:2023-12-01 11:29:35 25 4
gpt4 key购买 nike

学习 Scala,我一直想要一个相当于 LINQ's Single() method .例子,

val collection: Seq[SomeType]
val (desiredItem, theOthers) = collection.partition(MyFunc)

desiredItem.single.doSomething
// ^^^^^^

我可以用 desiredItem.head但是如果 MyFunc 实际上匹配了几个呢?我想要保证只有一个。

编辑 #2 重复的问题说'不,没有,但这里是如何构建它'。所以我在想,如果这是一个常见的需求,它会出现在基本 API 中。正确编写的 Scala 程序需要这个吗?

最佳答案

我会使用更详细的内容而不是 single :

 (desiredItem match {
case Seq(single) => single
case _ => throw IllegalStateException("Not a single element!")
}).doSomething

其优势超过 single是它允许您在异常情况下显式控制行为(抛出异常,返回回退值)。

或者,您可以使用解构赋值:
val Seq(single) = desiredItem
single.doSomething

在这种情况下,您将得到 MatchError如果 desiredItem不完全包含一个元素。

UPD : 我又看了你的代码。解构赋值是适合你的方法:
val collection: Seq[SomeType]
val (Seq(desiredItem), theOthers) = collection.partition(MyFunc)

desiredItem.doSomething

关于scala - 从 1 个元素的 Scala 集合中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com