在布尔scala上定义地图

时间:2018-08-27 10:12:53

标签: scala dictionary boolean

我正在尝试根据其他数组的值更改数组的值。特别是这些是我正在使用的数组:

Game.query.join(Category).filter(Category.id.in_([1, 2, 3]))

我想检查数组idx1,在什么地方是对的,我想在特定位置为数组inpoly分配相反的值,否则,只保留inpoly已经拥有的值。

我的期望是拥有这个数组:

val inpoly: Array[Boolean]=Array(false, true, true, false)
val idx1: Array[Boolean]=Array(true, false, false, false)

由于idx1的第一个值为true,因此更改inpoly的第一个值。 idx1的所有其他值都为false,因此保持原样不变

我尝试使用以下代码:

final_vector= true, true, true, false

但是我遇到以下错误:

idx1.map({
case true => !inpoly
case false => inpoly}
)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您正在对两个集合进行逐元素比较。最好的方法是将它们zip在一起,然后map两个值给出答案:

inpoly.zip(idx1).map{ case (poly, idx) => poly ^ idx }

在这种情况下,这两个值是异或的,但显然您可以使用这两个值的任意组合来生成结果。