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。

 

posted on 2017-09-23 06:33  satyrs  阅读(116)  评论(0编辑  收藏  举报

导航