Necesito para realizar un null/vacío comprobar en el código, antes de realizar alguna lógica.
He elemento a continuación, porque me siento !members?.empty no es correcto.

Hay un groovier manera de escribir el siguiente?

if (members && !members.empty) {
    //Some Work
}
InformationsquelleAutor Jay Bose | 2013-06-23

3 Comentarios

  1. 170

    De hecho, hay un Groovier Manera.

    if(members){
        //Some work
    }

    hace de todo, si members es una colección. Null verificación, así como de verificación vacía (Empty colecciones son coaccionados para false). El granizo Genial La Verdad. 🙂

    • «Vacío colecciones son obligadas a false» – ¡Gracias!
    • Más «groovier» es que por ejemplo, si usted está interesado en la edad máxima de los miembros, entonces se puede escribir la siguiente: miembros?.edad.max()
    • Nota: members?.age.max() golpes con «No se puede invocar el método max() sobre el objeto nulo» cuando los miembros es nulo. Usted tendría members?.age?.max()
    • Gr8, he verificado la misma. Muchas gracias @dmahapatro
    • Creo que te refieres members*.age.max()
    • no: GreenGiant s es la mejor solución: compruebe List members = null; y List members = [ [age: 12], [age: 24], [age: null], null ] tanto en contra de las soluciones
    • Este tipo de verificación está trabajando para la mayoría de los casos, pero si su propósito es comprobar si una variable es null, entonces usted podría terminar para un caso extremo donde la variable no es nulo, sino un valor booleano false
    • esta solución es perfecta para el caso de que las declaraciones múltiples necesidades de esta comprobación. funciona bien para la lista también para la comprobación de la no-nulo y no vacío. para la sola declaración yo prefiero usar null-operario seguro como GreenGiant sugiere
    • Ahora estoy usando esto en mi Jenkins canalización y trabajó como un encanto.

  2. 1
    !members.find()

    Creo que ahora la mejor manera de resolver este problema es el código de arriba. Funciona desde Groovy 1.8.1 http://docs.groovy-lang.org/docs/next/html/groovy-jdk/java/util/Collection.html#find(). Ejemplos:

    def lst1 = []
    assert !lst1.find()
    
    def lst2 = [null]
    assert !lst2.find()
    
    def lst3 = [null,2,null]
    assert lst3.find()
    
    def lst4 = [null,null,null]
    assert !lst4.find()
    
    def lst5 = [null, 0, 0.0, false, '', [], 42, 43]
    assert lst5.find() == 42
    
    def lst6 = null; 
    assert !lst6.find()
    • la colección que tiene 1 elemento null no está vacío, por lo que su sugerencia es malo
    • todos mis ejemplos de trabajo. Es el método find()
    • ¿Y si la colección es null?
    • def lst6 = null; assert !lst6.find() es correcta, no se produce ningún error
  3. 0

    FYI este tipo de código funciona (usted puede encontrar que es feo, es su derecho 🙂 ) :

    def list = null
    list.each { println it }
    soSomething()

    En otras palabras, este código ha null/vacío cheques tanto inútil:

    if (members && !members.empty) {
        members.each { doAnotherThing it }
    }
    
    def doAnotherThing(def member) {
      //Some work
    }

Dejar respuesta

Please enter your comment!
Please enter your name here