Scala yield关键字
yield 关键字将在完成循环迭代后返回一个结果。for循环在内部使用缓冲区来存储迭代的结果,当完成所有的迭代后,会从缓冲区中产生最终的结果。它的工作方式与指令性循环不同。返回的集合的类型与我们倾向于迭代的类型相同,因此Map会产生Map,List会产生List,以此类推。
语法
注意: 大括号用来保持变量和条件,结果是一个变量,所有x的值都保持在集合的形式中。
例子
输出
在上面的例子中,与yield语句一起使用的for循环实际上创建了一个列表的序列。
例子
输出
在上面的例子中,for循环中使用的yield语句实际上创建了一个数组。因为我们说yield e,它是一个Array[n1, n2, n3, ....]
。e <- a
是我们的生成器, if (e > 4)
可能是一个防护措施,过滤掉那些似乎不大于4的数字。