L'operatore "in" di Groovy sembra intendere cose diverse in diversi casi. A volte x in y
significa y.contains(x)
ea volte sembra chiamare y.isCase(x)
.Come funziona l'operatore di Groovy in?
Come fa Groovy a sapere quale chiamare? Esiste una particolare classe o un insieme di classi che Groovy sa su quale usare il metodo .contains? O il comportamento innescato dall'esistenza di un metodo su uno degli oggetti? Ci sono dei casi in cui l'operatore in viene trasformato in qualcos'altro interamente?
Ok, questo ha senso. Ero confuso sulla relazione tra "in" e isCase. Posso vedere ora contiene ha senso quando si utilizza un contenitore come etichetta del caso. Riutilizzare isCase per l'operatore in è un po 'sorprendente, dal momento che consente espressioni impreviste come' asdf 'in String == true. – ataylor
Questo è corretto, ma imo povero da parte di Groovy. Mentre il comportamento dell'istruzione case e il contenimento di un elemento usano la stessa logica con le collezioni, sono molto diversi in altre situazioni. Ad esempio, la seguente asserzione non passa: asserire 'b' in 'buns'. Questo è controintuitivo per non dire altro. –
qualcuno può, per favore, dirmi in breve che cosa significaCase? –