Zec*_*tes 15 collections scala yield
关于Scala中的yield命令和以下示例:
val values = Set(1, 2, 3)
val results = for {v <- values} yield (v * 2)
Run Code Online (Sandbox Code Playgroud)
PS.我知道这个例子没有遵循推荐的功能方式(也就是使用map),但它只是一个例子.
mis*_*tor 22
使用此方案for,编译器将解析转换为map/ flatMap/ filter调用.
Daniel的优秀答案回答了您的第一个问题.
要更改结果集合的类型,您可以使用collection.breakout(也在我上面链接的帖子中进行了解释.)
scala> val xs = Set(1, 2, 3)
xs: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
scala> val ys: List[Int] = (for(x <- xs) yield 2 * x)(collection.breakOut)
ys: List[Int] = List(2, 4, 6)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法之一将a转换Set为a List:
scala> List.empty[Int] ++ xs
res0: List[Int] = List(1, 2, 3)
scala> xs.toList
res1: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
推荐阅读: Scala集合的体系结构
| 归档时间: |
|
| 查看次数: |
15770 次 |
| 最近记录: |