Moh*_*deh 5 loops functional-programming scala yield
val input=Set(Set("a","b"),Set("b","c"))
Run Code Online (Sandbox Code Playgroud)
我要这个:
Map("a"->1,"b"->2,"c"->1)
Run Code Online (Sandbox Code Playgroud)
实现此类功能的最佳功能方法是什么?在嵌套的Iterables中使用yield关键字结果:
output = for(firstlevel<-input) yield for(item<-firstlevel) yield item
Run Code Online (Sandbox Code Playgroud)
更新: 纳入建议使用input.toSeq.flatten
而不是input.toSeq flatMap { _.toSeq }
转换为单个值序列...
input.toSeq.flatten
Run Code Online (Sandbox Code Playgroud)
...匹配的组值...
input.toSeq.flatten groupBy { identity }
Run Code Online (Sandbox Code Playgroud)
......算一算
input.toSeq.flatten groupBy { identity } mapValues { _.size }
Run Code Online (Sandbox Code Playgroud)