5

収量で使用するために、Scala の for 内包表記で (if で) 値を定義することは可能ですか?

これは、コストがかかる可能性のある評価を 2 回回避するために行いたいと考えています。

説明する例。

for {
 bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
4

2 に答える 2

7

これはどう:

for {
 bar <- bars
 exp = expensive(bar)
 if exp > 5
} yield (bar, exp)
于 2012-11-09T19:39:17.937 に答える
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)
于 2012-11-09T19:39:03.540 に答える