gpt4 book ai didi

list - 在 Groovy 的多重赋值中获取列表的尾部

转载 作者:行者123 更新时间:2023-12-05 01:02:35 25 4
gpt4 key购买 nike

Groovy 中的列表解构(多重赋值)可用于将值绑定(bind)到列表中的变量。例如:

def (first, second, third) = [1,2,3,4,5,6]
assert third == 3

是否有一种语法方式来实现以下目标:
def (first, second, <rest>) = [1,2,3,4,5,6]
assert ​rest​ == [3,4,5,6]

如果不是,那么实现相同结果的最接近/最常规的方法是什么,最好是在单个表达式中?

最佳答案

您需要做的是按照您描述的方式将列表从六个元素转换为三个元素。 IE。变换 [1,2,3,4,5,6][1,2,[3,4,5,6]] .您可能还希望它可以针对任意数量的元素进行调整。

这是一个解决方案,其中一个新方法 reduce已添加到 List它以建议的方式转换列表:

List.metaClass.reduce = { int size -> delegate[0..size-2] + [delegate[size-1..-1]] }

def (first, second, rest) = [1,2,3,4,5,6].reduce(3)
assert first == 1
assert second == 2
assert rest == [3,4,5,6]

编辑:昨晚 sleep 的时候,我想用 with实现这一目标。它与上面的想法相同,但由于逻辑是内联的,所以更神秘(可读性更差)。
def (first, second, rest) = [1,2,3,4,5,6].with { it[0..1] + [it[2..-1]] }
assert first == 1
assert second == 2
assert rest == [3,4,5,6]

关于list - 在 Groovy 的多重赋值中获取列表的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26074333/

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