为什么 groovy 的闭包可以使用 List 传递参数

2021-06-17 11:43:34 +08:00
 git00ll

如下代码,定义一个闭包接受两个参数,传递参数时可以传递 size = 2 的 List 作为参数, 使用 length = 2 的数组不可以,使用 size = 2 的 Set 也不可以。



    @Test
    void test2() {

        def closure = { a, b -> a == '1' ? b.toUpperCase() : b.toLowerCase() }

        List param1 = ["1", 'AbCd']
        assert 'ABCD' == closure(param1)

        String[] param2 = ["1", 'AbCd']
        assert 'ABCD' == closure(param2)  //数组不可以
        
    }



翻看文档未找到相关介绍,那为什么可以使用 List 呢?,求教,多谢

当然 Groovy 支持 使用*List 的方式,将 List 展平作为参数,这里我并没有使用星号

786 次点击
所在节点    程序员
1 条回复
AoEiuV020
2021-06-17 12:32:23 +08:00
试了下确实,这里星号不星号情况完全一样,感觉这设计有点多余,该不会是 bug 吧,要看白皮书才能知道了,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX