gpt4 book ai didi

groovy - 同时获取两个属性的最优雅方式

转载 作者:行者123 更新时间:2023-12-01 09:47:22 25 4
gpt4 key购买 nike

假设您有分层数据,并且想要获得单独属性的合并值,那么最优雅或 groovy 的方法是什么?

以下示例包含有关失败和跳过的测试的信息。当然,将这些值分开是有道理的——但是对于检索所有测试列表的用例,没有成功运行,我遇到了两种可能的解决方案,它们都不满足我的要求。

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()

关于groovy - 同时获取两个属性的最优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45795681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com