加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:23:36 所属栏目:大数据 来源:网络整理
导读:Groovy中的列表解构(多重赋值)可用于将值绑定到列表中的变量.例如: def (first,second,third) = [1,2,3,4,5,6]assert third == 3 是否有一种语法方式来实现以下目标: def (first,rest) = [1,6]assert ?rest? == [3,6] 如果不是,最接近/最常用的方法是什么
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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读