跟我一起学“仓颉”编程语言-Collection高级操作
·
一、Iterable和Iterator接口
为了更加方便的循环Collection类型的元素,仓颉提供了Iterable和Iterator接口,任何实现了Iterable接口的类型都是可迭代的,使用for-in循环,会自动处理迭代逻辑,也不需要处理Option类型的值。
package Study
main() {
let array = [1, 2, 3, 4, 5]
// 获取迭代器
let iter = array.iterator()
println(iter.next())
println(iter.next())
println(iter.next())
println(iter.next())
println(iter.next())
println(iter.next())
}
package Study
main() {
let array = [1, 2, 3, 4, 5]
// 获取迭代器
let iter = array.iterator()
for (item in iter) {
println(item)
}
}
注意:迭代器是一次性的,迭代完成后,就没法在使用了。
package Study
main() {
let array = [1, 2, 3, 4, 5]
// 获取迭代器
let iter = array.iterator()
println("第一次迭代")
for (item in iter) {
println(item)
}
println("第二次迭代")
for (item in iter) {
println(item)
}
}
如果第一次没有迭代完,还可以接着继续迭代。
package Study
main() {
let array = [1, 2, 3, 4, 5]
// 获取迭代器
let iter = array.iterator()
println("第一次迭代")
for (item in iter) {
println(item)
if (item == 2) {
break
}
}
println("第二次迭代")
for (item in iter) {
println(item)
}
}
也可以用while循环或do-while循环,但是需要手动解构值。
package Study
main() {
let array = [1, 2, 3, 4, 5]
// 获取迭代器
let iter = array.iterator()
while (true) {
match (iter.next()) {
case Some(item) => println(item)
case None => break
}
}
}
二、函数式编程
函数式编程:接收一个或多个函数作为输入,返回一个函数作为输出。
以下函数在使用时,都需要导包
import std.collection.*
1. map函数
package Study
import std.collection.*
main() {
let array = [1, 2, 3, 4, 5]
let map = map<Int64, Int64>{item:Int64 => item * 2}
let iter = map(array)
for (item in iter) {
println(item)
}
}
2. forEach函数(循环元素)
package Study
import std.collection.*
main() {
let array = [1, 2, 3, 4, 5]
array |> forEach<Int64>({item => println(item)})
}
3. filter函数(按照规则过滤元素)
package Study
import std.collection.*
main() {
let array = [1, 2, 3, 4, 5]
array |> filter<Int64>({item => item % 2 != 0}) |> forEach<Int64>({item => println(item)})
}
4. reduce函数(将所有元素归并成一个值)
package Study
import std.collection.*
main() {
let array = [1, 2, 3, 4, 5]
let sum = array |> reduce<Int64>({item: Int64, value: Int64 => item + value})
println(sum)
println(sum.getOrThrow())
}
三、小结
本章为大家详细的介绍了仓颉编程语言中Collection高级操作的内容,下一章,为大家带来Collection练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)