En este caso lo fácil es hacer un pequeña función con un bucle y a correr, pero como esto es Groovy y somos más guays queremos hacer que la clase String tenga un método que nos resuelva la papeleta para no ir llenando nuestro código con funciones de este estilo o en el menos malo de los casos creando una clase helper con un método estático o alguna cosa así.
Así que al lio:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//The kind of API I was looking for | |
String myInput="This string is FORBIDDEN" | |
myInput.containsAny(["FORBIDDEN","NOT_ALLOWED"]) //=>true | |
//Adding the method to String | |
String.metaClass.containsAny={notAllowedTerms-> | |
notAllowedTerms?.inject(false,{found,term->found || delegate.contains(term)}) | |
} | |
El truco aqui esta en usar la inyección de métodos del metaClass por un lado y sobre todo sacar provecho de la función inject que está disponible para listas.
Esta función lo que hace es ejecutar un closure sobre cada elemento de la lista arrastrando el valor de la ejecución en cada elemento hacia el siguiente.
Mola verdad? :D
No hay comentarios:
Publicar un comentario