解析Groovy Map类

ken*_*ken 7 grails groovy

任何人都可以解释为什么在调用[:]时调用地图上的[:].类会返回null.getClass()返回预期的结果Map.见下面的例子

1-

["test",[test:"test"],23].each {     
  println it.class 
}
class java.lang.String
null
class java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

2-

["test",[test:"test"],23].each {     
  println it.getClass()
}
class java.lang.String
class java.util.LinkedHashMap
class java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

hvg*_*des 11

这是答案

http://jira.codehaus.org/browse/GROOVY-1824

编辑 - 当然.我认为地图的语义是这样的,如果你有

def m = [one:1, two:2]
Run Code Online (Sandbox Code Playgroud)

你应该能够访问地图中的条目,如

m.one
Run Code Online (Sandbox Code Playgroud)

换言之,接入到地图是像获取地图对象上的属性.如果

m.class 
Run Code Online (Sandbox Code Playgroud)

返回的类,它会打破这些语义,因为"阶级"是不是添加到地图由程序员的一个关键.

那就是我收集的东西....