【发布时间】:2017-08-14 09:32:25
【问题描述】:
我有一个二维数组如下:
scala> testme4
res15: Array[(java.sql.Timestamp, Int, Int, Boolean)]
= Array((2016-11-17 15:18:50.47,13,-8,false),
(2016-11-17 15:18:51.37,21,-1,false),
(2016-11-17 15:18:51.37,22,-1,false),
(2016-11-17 15:18:51.86,23,-1,false),
(2016-11-17 15:18:52.3,24,22,false),
(2016-11-17 15:18:52.37,2,-2,false),
(2016-11-17 15:18:54.2,4,-1,false),
(2016-11-17 15:18:54.2,5,-7,false),
(2016-11-17 15:20:57.27,12,-4,false),
(2016-11-17 15:20:57.67,16,-1,false),
(2016-11-17 15:20:57.67,17,-9,false),
(2016-11-17 15:20:58.3,26,0,false),
(2016-11-17 15:20:59.35,26,0,true)
)
我希望选择(过滤器)来获取除“2016-11-17 15:20:58.3,26,0,false”之外的所有元素
我需要使用每个元素的第三和第四个子元素...通过过滤(伪代码)来做到这一点:
_3 != 0 或 _4==true
这两个谓词在各自的过滤器中工作正常:
scala> testme4.filter(_._3 != 0 )
res16: Array[(java.sql.Timestamp, Int, Int, Boolean)]
= Array((2016-11-17 15:18:50.47,13,-8,false),
(2016-11-17 15:18:51.37,21,-1,false),
(2016-11-17 15:18:51.37,22,-1,false),
(2016-11-17 15:18:51.86,23,-1,false),
(2016-11-17 15:18:52.3,24,22,false),
(2016-11-17 15:18:52.37,2,-2,false),
(2016-11-17 15:18:54.2,4,-1,false),
(2016-11-17 15:18:54.2,5,-7,false),
(2016-11-17 15:20:57.27,12,-4,false),
(2016-11-17 15:20:57.67,16,-1,false),
(2016-11-17 15:20:57.67,17,-9,false)
)
或者..
scala> testme4.filter(_._4)
res17: Array[(java.sql.Timestamp, Int, Int, Boolean)]
= Array((2016-11-17 15:20:59.35,26,0,true))
但如果我尝试将它们与逻辑运算符结合起来,我会得到一个错误:
scala> testme4.filter(_._3 != 0 || _._4)
<console>:38: error: missing parameter type for expanded function ((x$1, x$2) => x$1._3.$bang$eq(0).$bar$bar(x$2._4))
testme4.filter(_._3 != 0 || _._4)
有人知道为什么会出现这个错误吗?以及如何使用过滤器实现简单的逻辑运算?
提前致谢
【问题讨论】: