Scala为了表达序列解析提供了一种轻量级的符号。解析式的形式如for (enumerators) yield e
,其中enumerators
是以分号分隔的枚举器列表。一个枚举器要么是产生新变量的生成器,要么是一个过滤器。解析式对于由枚举器生成的每一个绑定的主体e
进行赋值,并且返回这些值的一个序列。
下面是示例:
1 | case class User(val name: String, val age: Int) |
这里的for
循环使用了yield
语句会生成一个List
。因为这里的yield user.name
是一个List[String]
。user <- userBase
是一个生成器,而if (user.age >=20 && user.age < 30)
是一个守卫,用于过滤出20多岁的用户。