2012-11-09 10 views

回答

7

如何:

for { 
bar <- bars 
exp = expensive(bar) 
if exp > 5 
} yield (bar, exp) 
+0

这只能如果'贵(巴)'型尊重,理解的接口(地图,flatMap,过滤器,过滤器等)。这个问题的作者没有提出它的确如此。如果确实如此,它将返回与作者提供的代码不同的结果。 – pedrofurla

+1

@pedrofurla好的。昂贵()可能不会返回集合。所以将“< - ”改为“=” – Don

+0

嗯...不知道你可以忽略'val'那里。尼斯。尽管如此,'<-'和'='具有完全不同的含义,即使它返回一个集合。顺便说一句,收集是没有必要的,只有'可以说是单子'的界面。 – pedrofurla

4

是的,你可以:

scala> List(1,2,3,4,5) 
res0: List[Int] = List(1, 2, 3, 4, 5) 

scala> for(n <- res0; val b = n % 2; if b==1) yield b 
res2: List[Int] = List(1, 1, 1) 
相关问题