groovy中的[:]是什么意思?

42

在阅读另一位开发人员编写的Groovy代码时,我遇到了以下定义:

def foo=[:]

什么意思?

3个回答

55

[:]是创建一个Map的简写符号

您还可以向其中添加键和值:

def foo = [bar: 'baz']

2
我想多个条目是用逗号分隔的吧?[bar: 'baz', qux: 'quux'] - martin jakubik

16

[:] 创建一个空的 Map。冒号用于将其与创建一个空 List 的 [] 区分开来。

这段 Groovy 代码:

def foo = [:]

大致相当于这段Java代码:

Object foo = new java.util.LinkedHashMap();

2

引用文档:

注意,[:]是空映射表达式。

... 这是唯一的Map,其size()返回0。它本身很少有用,但你当然可以向这个映射表中添加值:

def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5

在技术上,“仅有的返回0大小的Map”是不正确的。有很多可能具有大小为0的映射实例,并且它们绝对不都具有引用相等性。但是,它们都将是“相等的”(假设它们没有被修改),这可能是您的意思。 - Sean Reilly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接