Kotlin:“如果项目不在列表中”正确的语法

鉴于Kotlin的列表查找语法,

if (x in myList) 

相对于惯用的Java,

 if (myList.contains(x)) 

如何表达否定? 编译器不喜欢这些:

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

有没有一种惯用的方式来表达这个比if !(mylist.contains(x))) ? 我没有看到它在Kotlin控制流文件中提到。

x !in list语法中使用x !in list

以下代码:

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

被编译成相当于:

 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"); } 

in!in操作符使用任何可访问的方法或扩展方法,该方法名为contains且返回Boolean 。 对于集合(列表,集合…),它使用collection.contains方法。 对于数组(包括原始数组),它使用以indexOf(element) >= 0实现的扩展方法Array.contains

这个在Kotlin的运营商是!in 所以你可以做

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

你可以在关于运算符重载的官方文档中找到它。