Scala中for表达式与集合操作详解
1. for表达式的翻译规则
在Scala里,所有的for表达式都能够用高阶函数 map 、 flatMap 和 withFilter 来表示,下面是不同类型for表达式的翻译规则:
- 单生成器的for表达式
对于简单的for表达式 for (x <- expr1) yield expr2 (其中 x 是变量),会被翻译为 expr1.map(x => expr2) 。
- 以生成器和过滤器开头的for表达式
形如 for (x <- expr1 if expr2) yield expr3 的表达式,会先翻译为 for (x <- expr1 withFilter (x => expr2)) yield expr3 ,最终得到 expr1 withFilter (x => expr2) map (x => expr3) 。若过滤器后面还有其他元素,如 for (x <- expr1 if expr2; seq) yield expr3 ,会先翻译为 for (x <- expr1 withFilter expr2; seq) yield expr3 ,再继续对新表达式进行翻译。
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



