Groovy中的列表解构(多重赋值)可用于将值绑定到列表中的变量.例如:
def (first,second,third) = [1,2,3,4,5,6] assert third == 3
是否有一种语法方式来实现以下目标:
def (first,<rest>) = [1,6] assert rest == [3,6]
如果不是,最接近/最常用的方法是什么才能获得相同的结果,最好是单表达式?
解决方法
您需要做的是按照您描述的方式将列表从六个元素转换为三个元素.即将[1,6]变换为[1,[3,6]].您可能还希望将其调整为任意数量的元素.
这是一个解决方案,其中向List添加了一个新方法reduce,它以建议的方式转换列表:
List.MetaClass.reduce = { int size -> delegate[0..size-2] + [delegate[size-1..-1]] } def (first,rest) = [1,6].reduce(3) assert first == 1 assert second == 2 assert rest == [3,6]
编辑:昨晚,在睡觉的时候,我想用它来实现这个作为一个班轮.它与上面的想法相同,但由于逻辑内联,因此更加神秘(不太可读).
def (first,6].with { it[0..1] + [it[2..-1]] } assert first == 1 assert second == 2 assert rest == [3,6]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。