我想知道为什么这种语法对于传播列表和地图不一致。例如在这段代码中
def list =[1,2,3]
def map =[a:1,b:2]
println "${[*list]}"
println "${[*:map]}"
Run Code Online (Sandbox Code Playgroud)
列表以单个 * 展开,并以 * 进行映射:
它与传播运算符内部的工作方式有关吗?因为没有看到 *map 构造的任何其他用法(例如用 [:] 定义一个空映射,以便将它与列表区分开来)。
展开运算符 (*) 用于从集合中提取条目并将它们作为单独的条目提供。
1.展开列表元素:
在列表字面量中使用时,展开运算符的作用就像将展开元素内容内联到列表中一样:
Run Code Online (Sandbox Code Playgroud)def items = [4,5] def list = [1,2,3,*items,6] assert list == [1,2,3,4,5,6]
来源:http : //docs.groovy-lang.org/latest/html/documentation/#_spread_list_elements
2. 展开地图元素:
扩展映射运算符的工作方式与扩展列表运算符类似,但用于映射。它允许您将地图的内容内联到另一个地图文字中,如下例所示:
Run Code Online (Sandbox Code Playgroud)def m1 = [c:3, d:4] def map = [a:1, b:2, *:m1] assert map == [a:1, b:2, c:3, d:4]?
来源:http : //docs.groovy-lang.org/latest/html/documentation/#_spread_map_elements
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |