for(scala)
for{ i <- 1 util n j <- 1 util i if isPrime(x+y) }yield(i,j)
(1 until n)flatMap(i=>
(1 until i)filter(j=> isPrime(i+j))
map(j=>(i,j)))
i从1到n变化,对每一个i进行flatMap操作:
从1到i,对每一个j进行filter操作:
如果i+j为prime则选择此j,并对j进行map操作得到(i,j)
map:
Abstract List[+T]{
def map[U](f:T=>U): List[U] =this match {
case x::xs => f(x)::xs.map(f)
case Nil =>Nil
}
}
对T type的父类都可以传入,这里map返回了list而不只是一个value
这里对U没有限制
可以看大scala通过map、filter将for表示的非常好,内部是for。
From satrys,
Kristen wang