我有以下代码:
val e1 = 10 :: 15 :: 20 :: 25 :: Nil
val e2 = 10 :: 15 :: 20 :: 25 :: Nil
val y = for {
e <- e1 if(e%2==0)
} yield e
val y1 = e1.withFilter(x => (x%2 == 0)).map(Int=>Int)
val e31 = for{
i <- e1
j <- e2 if (isPrime(i+j))
} yield(i,j)
现在正如您所看到的y
,y1
两者都给了我完全相同的值,这证明我成功地表示for
了具有(单个生成器 + 过滤器)与 withFilter 和 map 的语句。
但是当我有一个for
包含多个生成器和过滤器的语句(例如:val e31
)时,我无法找出如何用 map、filterMap 和 withFilter 来表示它。