Der Groovy "in" -Operator scheint in verschiedenen Fällen unterschiedliche Dinge zu bedeuten. Manchmal x in y
bedeutet y.contains(x)
und manchmal scheint es y.isCase(x)
zu rufen.Wie funktioniert der Groovy In Operator?
Woher weiß Groovy, wen man anrufen soll? Gibt es eine bestimmte Klasse oder Klasse von Klassen, die Groovy über die Verwendung der .contains-Methode weiß? Oder wird das Verhalten durch das Vorhandensein einer Methode auf einem der Objekte ausgelöst? Gibt es Fälle, in denen der In-Operator komplett in etwas anderes verwandelt wird?
Ok, das macht Sinn. Ich war verwirrt über die Beziehung zwischen "in" und isCase. Ich kann jetzt sehen, dass es sinnvoll ist, Container als Case-Label zu verwenden. Die Wiederverwendung von isCase für den Operator in ist ein wenig überraschend, da es unerwartete Ausdrücke wie 'asdf' in String == true erlaubt. – ataylor
Das ist richtig, aber imo von groovy schlecht. Während das Case-Statement-Verhalten ein Element enthält, das dieselbe Logik wie Collections verwendet, sind sie in anderen Situationen sehr unterschiedlich. Zum Beispiel wird die folgende Behauptung nicht bestanden: Assert 'b' in 'Brötchen'. Dies ist, um es milde auszudrücken, nicht einleuchtend. –
kann mir bitte jemand kurz sagen, was isCase bedeutet? –