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) { ... }
你可以在关于运算符重载的官方文档中找到它。