Scala 从三个不同的选项[列表[MyType]]中生成一个选项[列表[MyType]]

Scala 从三个不同的选项[列表[MyType]]中生成一个选项[列表[MyType]],scala,Scala,我有 其中每个选项都是[List[MyType]] 我想将它们全部“合并”在一起(这是一个折叠吗?),这样我就只有一个选项[List[MyType]] 谢谢一种方法是: def searchListProducts1 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchDescription) def searchListProducts2 = models.Products.IndivProd

我有

其中每个选项都是[List[MyType]]

我想将它们全部“合并”在一起(这是一个折叠吗?),这样我就只有一个选项[List[MyType]]

谢谢

一种方法是:

def searchListProducts1 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchDescription)
def searchListProducts2 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchName)
def searchListProducts3 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchIngredients)
另一种(我认为更好)方式:

但正如LimboSoup所说,我将放弃
选项,因为它看起来是多余的,您可以很容易地得到一个空列表,而不是将其包装在一个选项中。

一种方法是:

def searchListProducts1 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchDescription)
def searchListProducts2 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchName)
def searchListProducts3 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchIngredients)
另一种(我认为更好)方式:

但正如LimboSoup所说,我将放弃
选项,因为它看起来是多余的,您可以很容易地得到一个空列表,而不是将其包装在一个选项中。

一种方法是:

def searchListProducts1 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchDescription)
def searchListProducts2 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchName)
def searchListProducts3 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchIngredients)
另一种(我认为更好)方式:

但正如LimboSoup所说,我将放弃
选项,因为它看起来是多余的,您可以很容易地得到一个空列表,而不是将其包装在一个选项中。

一种方法是:

def searchListProducts1 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchDescription)
def searchListProducts2 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchName)
def searchListProducts3 = models.Products.IndivProduct.getProductsFromJsObjectList(productsTextSearchIngredients)
另一种(我认为更好)方式:


但是正如LimboSoup所说,我会放弃
选项,因为它看起来是多余的,你可以很容易地得到一个空的列表,而不是把它包装在一个选项中。

正如其他人所建议的,
选项[list[T]
是多余的,除非你有很好的理由选择
而不是
无。只需丢失
选项
,然后执行以下操作:

val listed = List(searchListProducts1, searchListProducts2, searchListProducts3)

listed.map(_.getOrElse(List())).reduce(_ ++ _)


如果出于某种原因确实要保留
选项
包装器:

List(searchListProducts1, searchListProducts2, searchListProducts3).flatten


为什么奇怪的双重
变平
?因为首先将
列表
包装成
选项
很奇怪。

正如其他人所建议的那样,
选项[List[T]
是多余的,除非你有很好的理由选择
而不是
。只需丢失
选项
,然后执行以下操作:

val listed = List(searchListProducts1, searchListProducts2, searchListProducts3)

listed.map(_.getOrElse(List())).reduce(_ ++ _)


如果出于某种原因确实要保留
选项
包装器:

List(searchListProducts1, searchListProducts2, searchListProducts3).flatten


为什么奇怪的双重
变平
?因为首先将
列表
包装成
选项
很奇怪。

正如其他人所建议的那样,
选项[List[T]
是多余的,除非你有很好的理由选择
而不是
。只需丢失
选项
,然后执行以下操作:

val listed = List(searchListProducts1, searchListProducts2, searchListProducts3)

listed.map(_.getOrElse(List())).reduce(_ ++ _)


如果出于某种原因确实要保留
选项
包装器:

List(searchListProducts1, searchListProducts2, searchListProducts3).flatten


为什么奇怪的双重
变平
?因为首先将
列表
包装成
选项
很奇怪。

正如其他人所建议的那样,
选项[List[T]
是多余的,除非你有很好的理由选择
而不是
。只需丢失
选项
,然后执行以下操作:

val listed = List(searchListProducts1, searchListProducts2, searchListProducts3)

listed.map(_.getOrElse(List())).reduce(_ ++ _)


如果出于某种原因确实要保留
选项
包装器:

List(searchListProducts1, searchListProducts2, searchListProducts3).flatten


为什么奇怪的双重
变平
?因为首先将
列表
包装到
选项
中很奇怪。

选项
中包装
列表
似乎是多余的。。有什么理由让
而不仅仅是一个空的
列表
?我想没有。除了我可以在None上进行大小写匹配之外..您可以为空列表匹配
Nil
。在
选项中包装
list
似乎是多余的。。有什么理由让
而不仅仅是一个空的
列表
?我想没有。除了我可以在None上进行大小写匹配之外..您可以为空列表匹配
Nil
。在
选项中包装
list
似乎是多余的。。有什么理由让
而不仅仅是一个空的
列表
?我想没有。除了我可以在None上进行大小写匹配之外..您可以为空列表匹配
Nil
。在
选项中包装
list
似乎是多余的。。有什么理由让
而不仅仅是一个空的
列表
?我想没有。除了我可以在None上进行大小写匹配..您可以在空列表中匹配
Nil