我对 groovy 很陌生,查看一些现有的代码,我看到了:
def timestamp = event.timestamp[]
我不明白这一行的空方括号在做什么。请注意,此处定义的时间戳应该接收一个长值。
在这段代码中,event
是在我们庞大的代码库中的其他地方定义的,所以我不确定它是什么。我以为它是一张地图,但是当我在地图上使用这个符号编写一些单独的测试代码时,方括号导致一个空值被分配给时间戳。然而,在上面的代码中,括号是获得正确(非空)值所必需的。
一些快速的谷歌搜索并没有太大帮助(很难在“[]”上搜索)。
编辑:原来 event 和 event.timestamp 都是 zero.core.groovysupport.GCAccessor 对象,正如下面的答案所说, [] 必须在这些对象上调用 getAt() 并返回一个值(在这种情况下,一个 long )。