for (element in this) if (predicate(element)) destination.add(element) return destination } 1. 2. 3. 4. 5. 6. 7. 正所谓,知其然也要知其所以然。如上源码所示,filter的本质就是,循环判断block是否满足条件,如果满足则添加进入list,最后返回 简单使用如下: arrayOf(1,2,3,4,5,6).filter { it...
操作符是我们日常Kotlin开发的利器,如果我们点进去看看源码,我们会发现这些操作符大多都会使用inline。inlinefun<T> Iterable<T>.filter(predicate: (T)->Boolean): List<T>{val destination = ArrayList<T>()for (element inthis) if (predicate(element))destination.add(element)return destination} 既然官方标...
// 运算符有上限,需要使用中缀表达式来扩展 infix fun Int.vs(num: Int): CompareResult = if (this - num > 0) { CompareResult.MORE }else if (this - num > 0) { CompareResult.LESS }else { CompareResult.EQUAL } fun main(args: Array<String>) { println(5 vs 6) // 扩展函数 println(...
不仅Array扩展了此方法,各种其他数据类型的数组都扩展了此方法。所以集合可以很方便地构造一个 Flow。 3、flow {···}方法。这个方法可以在其内部顺序调用emit方法或emitAll方法从而构造一个顺序执行的 Flow。emit是发射单个值;emitAll是发射一个流,这两个方法分别类似于list.add(item)、list.addAll(list2)方法。
因为有可能会需要使用外部的类传递进来的参数,使用每一次都要实例化 Kotlin...groupingBy() eachCount() // counts elements in each group Kotlin 和 Java 中的数据类型 使用 Int 时,Kotlin 将其转换为...时,Kotlin将其转换为 Integer 字节码 List 仍然会被当成 List Array 是 Integer[],IntArray 是 int[...
add(element) return destination } 通过上面的函数是不是发现和MutableCollection不变相违背啊,实际上不是的。这里就是一种典型的使用点变型的使用,我们可以再仔细分析下这个函数,destination在filterTo函数的内部只做了写操作,遍历Iterable中的元素,并把他们add操作到destination集合中,可以验证我们上述的结论了,虽然...
//用指定元素替换掉该集合中指定位置的元素 abstract fun set(index: Int, element: E): E toArray 代码语言:javascript 代码运行次数:0 运行 AI代码解释 //将集合转换成Array open fun toArray(): Array<Any?> toString 代码语言:javascript 代码运行次数:0 运行 AI代码解释 //返回一个表达该集合的字符串...
fun main(args: Array<String>) { val fruit:String= "orange"//1 a = "banana" //2 Error } 创建水果变量,并用字符串orange的值进行初始化 编译器会抛出错误,因为水果变量已经被初始化 Kotlin 还允许我们在文件级别定义变量和函数。我们将在第三章“玩转函数”中进一步讨论。
for (element in this) action(element) 首先高阶函数肯定是一个函数,那么方法的调用如下这样写肯定是没有问题的: intArray.forEach(?) 只是这个?是个函数类型的参数,函数类型是 (Int) -> Unit,那么我就定义一个相同的函数类型的变量传给 forEach 不就好了嘛,如下所示: ...
int size = env->GetArrayLength(names); for (int i = 0; i < size; i++) { jstring name_index = static_cast<jstring>(env->GetObjectArrayElement(names, i)); const char *c_name = env->GetStringUTFChars(name_index, NULL); LOGE("姓名:%s", c_name);...