鉴于Kotlin的列表查找语法,
if (x in myList)
Run Code Online (Sandbox Code Playgroud)
而不是惯用的Java,
if (myList.contains(x))
Run Code Online (Sandbox Code Playgroud)
怎么能表达否定?编译器不喜欢以下任何一个:
if (x not in mylist)
if !(x in mylist)
Run Code Online (Sandbox Code Playgroud)
是否有一种惯用的表达方式除此之外if !(mylist.contains(x)))?我没有在Kotlin Control Flow文档中看到它.
Yoa*_*erg 46
使用x !in list语法.
以下代码:
val arr = intArrayOf(1,2,3)
if (2 !in arr)
println("in list")
Run Code Online (Sandbox Code Playgroud)
编译为相当于:
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");
}
Run Code Online (Sandbox Code Playgroud)
在in和!in运营商使用名为任何的使用方法或扩展方法,contains并返回Boolean.对于集合(list,set ...),它使用collection.contains方法.对于数组(包括原始数组),它使用Array.contains实现为的扩展方法indexOf(element) >= 0
zsm*_*b13 15
Kotlin的操作员是!in.所以你可以做到
if (x !in myList) { ... }
Run Code Online (Sandbox Code Playgroud)
您可以在有关运算符重载的官方文档中找到它.
| 归档时间: |
|
| 查看次数: |
9140 次 |
| 最近记录: |