使用Scala检查列表中的值

时间:2014-08-14 18:54:15

标签: scala

我有check(a, b, c)方法检查a是否在bc (a >= b && a <= c)之间。 对于给定的列表,例如v = List(1,2)r = List((3,4),(5,6));我想使用check方法检查所有值r是否在r的范围内:check(1, 3, 4) && check (2, 5, 6)

我有如下高级解决方案,但我有一些缺失的部分。

val x = v zip r // (Int, (Int, Int)) 
val y = ???     // (Int, (Int, Int)) => (Int, Int, Int)
(y map check).forall {_ == true} // error 

我如何获得解决方案?

1 个答案:

答案 0 :(得分:5)

如何直接致电forall

(v zip r).forall{case (a,(b,c)) => check(a,b,c)}

使你的方法有效的一种方法(我不推荐它)。

val x = v zip r
val y = x map {case (a,(b,c)) => (a,b,c)}
val tupledCheck = (check _).tupled

//Some alternatives for the result
(y map tupledCheck).forall(_ == true)
(y map tupledCheck).forall(identity)
y forall tupledCheck