groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From OC <...@ocs.cz>
Subject getAt inconsistence
Date Sat, 23 Jul 2016 12:52:39 GMT
Hello there,

is this the assumed behaviour? As always I might be missing something of importance, but I
would expect, when overriding getAt, that it simply gets called with the appropriate argument
for "foo[bar]" expressions.

Instead, alas, for strings and gstrings, getAt is not called at all. I have found getProperty
is called instead, which seems wrong: far as I understand the documentation (and, well, also
simply by common sense) I should get getProperty for "me.foo", but getAt for "me['foo']",
should I not?

===
43 /tmp> groovy -version
Groovy Version: 2.4.7 JVM: 1.7.0_13 Vendor: Oracle Corporation OS: Mac OS X
44 /tmp> <q.groovy      
class q {
  static main(args) {
    ExpandoMetaClass.enableGlobally()
    def mmc=getMetaClass()
    mmc.getAt={ index ->
      println "getAt $index"
    }
    mmc.getProperty={ name ->
      println "getProperty $name"
    }
    def me=newInstance()
    [1,3.14,'hi',null,q,"${->'gstring'}"].each { me[it] }
  }
}
45 /tmp> groovy q       
getAt 1
getAt 3.14
getProperty hi
getAt null
getAt class q
getProperty gstring
46 /tmp> 
===

Thanks and all the best,
OC


Mime
View raw message