Kotlin: syntax adecuada "si el elemento no está en la list"

Dada la syntax de búsqueda de list de Kotlin,

if (x in myList) 

a diferencia de Java idiomático,

 if (myList.contains(x)) 

¿Cómo se puede express la negación? Al comstackdor no le gusta ninguno de estos:

 if (x not in mylist) if !(x in mylist) 

¿Hay una manera idiomática de express esto de otra manera que if !(mylist.contains(x))) ? No lo vi mencionado en los documentos de Kotlin Control Flow.

Use la syntax x !in list In x !in list .

El siguiente código:

 val arr = intArrayOf(1,2,3) if (2 !in arr) println("in list") 

se comstack hasta el equivalente de:

 int[] arr = new int[]{1, 2, 3}; // uses xor since JVM treats booleans as int if(ArraysKt.contains(arr, 2) ^ true) { System.out.println("in list"); } 

Los operadores in y !in In usan cualquier método accesible o método de extensión que se llame contains y devuelve Boolean . Para una colección (list, set …), usa el método collection.contains . Para las matrices (incluidas las matrices primitivas) utiliza el método de extensión Array.contains que se implementa como indexOf(element) >= 0

El operador para esto en Kotlin es !in In Entonces puedes hacer

 if (x !in myList) { ... } 

Puede encontrar esto en los documentos oficiales sobre la sobrecarga del operador .

  • Dagger2 + MVP en Kotlin
  • Error de falta de coincidencia del tipo Kotlin al pasar los arguments desde la terminal
  • Cómo crear el flask gordo con gradle kotlin script
  • Cómo llamar a assertEquals con Double Epsilon / Precision en Kotlin?
  • Cómo consultar Realm en el background Subprocess usando RxJava2
  • Regex: un metacarácter para reconocer cualquier tipo de personaje
  • Opción Encadenamiento en lugar de if / else
  • Relaciones de list de entidades en la sala de Android
  • ¿Por qué mi código inalcanzable?
  • ¿Cómo puedo get una reference a un object Kotlin por su nombre?
  • Cómo usar la biblioteca kmongo para operador de sector