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 .

  • Cómo leer y escribir files txt en android en kotlin
  • Kotlin comtesting si la function requiere parámetro de instancia
  • ¿Puede un object de class creado "sobre la marcha" en Kotlin tener un constructor?
  • Pass facebook AccessToken por Retrofit
  • ¿Cómo usar seleccionableButtonBackground en Anko?
  • Android Studio 2.3.2 y Kotlin 1.1.2-4 + Enlace de datos
  • ¿Cómo escribir un getter personalizado si las properties de class están definidas en el constructor?
  • Clase de datos sellados en Kotlin
  • Prueba unitaria Verifique una function aprobada para ser llamada
  • Retrollamada TableView en Kotlin
  • Cómo establecer no nulo para params de funciones en kotlin