08 Scala sequence comprehensions (序列解析)

语法:for (enumerators) yield e

enumerators为用分号间隔开的变量生成器 或者过滤器(if),yield返回值,两个例子:

def foo(n: Int, v: Int) =
   for (i <- 0 until n;
        j <- 0 until n if i + j == v)
   yield (i, j)
case class User(name: String, age: Int)

val userBase = List(User("Travis", 28),
  User("Kelly", 33),
  User("Jennifer", 44),
  User("Dennis", 23))

val twentySomethings = for (user <- userBase if (user.age >=20 && user.age < 30))
  yield user.name  // i.e. add this to a list

twentySomethings.foreach(name => println(name))  // prints Travis Dennis

你可能感兴趣的:(08 Scala sequence comprehensions (序列解析))