収量で使用するために、Scala の for 内包表記で (if で) 値を定義することは可能ですか?
これは、コストがかかる可能性のある評価を 2 回回避するために行いたいと考えています。
説明する例。
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
収量で使用するために、Scala の for 内包表記で (if で) 値を定義することは可能ですか?
これは、コストがかかる可能性のある評価を 2 回回避するために行いたいと考えています。
説明する例。
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
これはどう:
for {
bar <- bars
exp = expensive(bar)
if exp > 5
} yield (bar, exp)
はい、次のことができます。
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)