In Groovy sind nur Verschlüsse standardmäßig aufrufbar. Z.B. Die Kurse sind nicht sofort abrufbar. Bei Bedarf können Sie dem Typ ExpandoMetaClass des Typs eine Aufrufmethode dynamisch hinzufügen, um alle Instanzen dieses Typs aufrufbar zu machen.
Hinweis: Sie können alle Codebeispiel die GroovyConsole
mit ausprobieren
Verschlüsse sind aufrufbar standardmäßig in Groovy:
// A closure
def doSomething = { println 'do something'}
doSomething()
// A closure with arguments
def sum = {x, y -> x + y}
sum(5,3)
sum.call(5,3)
// Currying
def sum5 = sum.curry(5)
sum5(3)
Um alle Instanzen eines bestimmten Typs aufrufbar möglich zu machen dynamisch eine Aufrufmethode zu seiner Metaklasse hinzufügen:
MyObject.metaClass.call = { prinlnt 'I was called' }
def myObject = new MyObject()
myObject()
Wenn Sie lieber nur eine bestimmte Instanz aufrufbar machen können Sie dynamisch eine Call-Methode zu seiner Meta-Klasse hinzufügen:
def myObject = new MyObject()
myObject.metaClass.call = { println 'Called up on' }
myObject()
Ich bemerkte, es funktioniert auch ohne die Metaklasse zu verändern. Wenn ich eine Methode namens Call hinzufügen, wird sie aufgerufen. – Geo
Große Antwort! Der Link "ExapandoMetaClass" ist jedoch fehlerhaft. – jacwah