groovy – 最优雅的方式同时获得两个属性
发布时间:2020-12-14 16:23:28 所属栏目:大数据 来源:网络整理
导读:假设您有分层数据并希望获得单独属性的合并值,那么最优雅或最常规的方法是什么? 以下示例包含有关失败和跳过测试的信息.当然,确实有意义的是,这些值是分开的 – 但是对于检索所有测试列表的用例,这些测试没有成功运行,我遇到了两个可能的解决方案,他们都不
假设您有分层数据并希望获得单独属性的合并值,那么最优雅或最常规的方法是什么?
以下示例包含有关失败和跳过测试的信息.当然,确实有意义的是,这些值是分开的 – 但是对于检索所有测试列表的用例,这些测试没有成功运行,我遇到了两个可能的解决方案,他们都不满足我. def junitResultList = [ [ name: "Testsuite A",children: [ failedTests: ["Test 1","Test 2"],skippedTests: [] ] ],[ name: "Testsuite B",children: [ failedTests: ["CursorTest"],skippedTests: ["ClickTest","DragNDropTest"] ] ] ] 更具体地说,我希望值为[“Test 1”,“Test 2”,“CursorTest”,“ClickTest”,“DragNDropTest”]. 第一种方法只是执行扩展测试列表的添加: (junitResultList*.children*.failedTests + junitResultList*.children*.skippedTests).flatten() 虽然这有效,但在我看来,两次指定这些属性的路径似乎并不是最常规的方式,所以我想出了这个可怕的但不知何故吸引人的灾难: (junitResultList*.children*.findAll { ['skippedTests','failedTests'].contains(it.key) })*.values().flatten() 解决方法
您可以将初始表达式简化为以下内容:
junitResultList.children.collect { it.failedTests + it.skippedTests }.flatten() 要么 junitResultList.children.collect { [it.failedTests,it.skippedTests] }.flatten() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |