Scala: .take(1) in for-comprehension?


val SumABC = 1000
val Max = 468
val Min = 32
val p9 = for {
  a <- Max to 250 by -1
  b <- Min+(Max-a) to 249
  if a*a+b*b == (SumABC-a-b)*(SumABC-a-b)
} yield a*b*(SumABC-a-b)

我可以在这里取(1)吗?(我试图将其转换为平面图、过滤器等,但由于我失败了,我想它无论如何都不会那么可读......

如果我理解你的神秘追求,你想做的是以下内容

val p9 = (for {
  a <- Max to 250 by -1
  b <- Min+(Max-a) to 249
  if a*a+b*b == (SumABC-a-b)*(SumABC-a-b)
} yield a*b*(SumABC-a-b)).take(1)
只需在 for 之前

和之后添加括号,以确保在 for 块的结果上调用 take 方法

最新更新