微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Groovy中的多个赋值中获取列表的尾部

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 举报,一经查实,本站将立刻删除。

相关推荐