当前位置: 首页 > news >正文

跟我一起学“仓颉”编程语言-Array数组

在编程时,需要存储并操作同类型的一组数据,这是之前学习的基本数据类型已经无法满足这种需求了,为了方便程序可以存储并操作同类型的一组数据,仓颉提供了4种Collection类型:Array、ArrayList、HashSet、HastMap,这些类型都是引用类型。

一、Array的创建

Array数组,用于存储相同数据类型的有序序列的数据,并且一旦初始化后,它的长度就固定下来了,不能对其进行新增和删除的操作。

package Study main() { // 通过[] 赋值来创建数组 let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1) // 通过构造函数来创建 3表示长度,repeat表示数组的元素 let arr2 = Array<Int64>(3, repeat: 0) println(arr2) // 通过尾随lambda表达式创建 3表示长度 let arr3 = Array<Int64>(3) {index => index} println(arr3) }

二、Array的获取

判断Array是否为空

package Study main() { let array1 = [1,2,3,4,5] println(array1.isEmpty()) }

获取Array的长度

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.size) }

获取单个元素

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1[0]) println(arr1[2]) println(arr1[arr1.size - 1]) }

注意:还可以通过get函数来获取单个元素,但是get函数返回的是Option<T>类型,需要对返回值进行解构。

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.get(0)) println(arr1.get(0).getOrThrow()) }

注意:在解构get函数的结果时,注意数组越界的问题。

获取部分元素

利用区间类型,进行切片获取

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] // 取[0, 2)的所有元素,2位置元素取不到 println(arr1[..2]) // 取下标2之后的所有元素 println(arr1[2..]) // 取[1, 4]的所有元素 println(arr1[1..=4]) // 取所有元素 println(arr1[..]) }

注意:这里的区间类型的步长(step)必须为1。

通过slice函数

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] // 取[1, 3]所有的元素 1表示下标为1,3表示长度,即:从下标为1处,取3个元素 println(arr1.slice(1, 3)) }

循环输出数组元素

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] for (i in 0..arr1.size) { println(arr1[i]) } println() // 增强for循环 for (item in arr1) { println(item) } }

判断Array数组中是否包含指定元素

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.contains(1)) println(arr1.contains(5)) }

三、Array的修改

修改单个元素

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] arr1[arr1.size - 1] = 5 println(arr1[arr1.size - 1]) }
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1) // 将下标为2的元素修改成 5 arr1[2] = 5 println(arr1) }

Array数组的赋值

package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] var arr2: Array<Int64> = arr1 println(arr1) println(arr2) println() arr2[0] = 9 // 因为Array数组是引用类型,修改arr2的元素,会影响到arr1 println(arr1) println(arr2) // 正确做法 使用clone方法 println() arr2 = arr1.clone() arr2[0] = 6 println(arr1) println(arr2) // 获取部分元素 let arr3 = arr1.clone(1..4) println(arr3) }

注意:Collection类型是引用类型,因此,Array、ArrayList、HashSet、HashMap都可以用clone方法。

四、小结

本章为大家详细的介绍了仓颉编程语言中Array数组的内容,下一章,为大家带来ArrayList集合的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

http://www.jsqmd.com/news/976358/

相关文章:

  • 丽水黄金回收怎么选?正规回收渠道助力闲置黄金高效变现 - 润富黄金回收
  • WiVRn日志分析:调试与解决流式传输问题的实用技巧
  • 免费视频防抖神器:用Gyroflow消除画面抖动的完整指南
  • 解决过拟合问题:two-stream-action-recognition数据增强技术全解析
  • Rufus:免费USB启动盘制作神器,3分钟搞定Windows 11安装
  • Czkawka终极指南:三步快速清理重复文件释放存储空间
  • 探索Video2X:AI视频超分辨率与帧插值的深度实践指南
  • 别墅电梯怎么选?山东业主真实体验:12年本土品牌金牛电梯值得信赖 - 中媒介
  • 国内商用UV平板打印机品牌排行 - 奔跑123
  • 解锁鼠标潜能:Mac Mouse Fix如何让普通鼠标超越苹果触控板
  • 上海闲置奢品回收指南,2026 金价走势 + 出手干货 - 讯息早知道
  • 国内冲压拉伸油主流生产厂家实测排行一览 - 奔跑123
  • 终极鼠标性能解放:Mac Mouse Fix 如何让你的10美元鼠标超越苹果触控板
  • 大模型落地难?知识工程才是AI价值上限的“金钥匙”!| 企业必读
  • Hutch社区生态:贡献指南和未来路线图展望
  • 3个颠覆性创新:Kronos如何用AI语言模型重塑量化交易范式
  • ASP+Access实现的浏览器可用人事管理系统(含论文文档与答辩PPT)
  • UKI.js快速入门教程:如何用JSON构建复杂Web界面
  • 2026年C语言就业真的很差吗?现在学习还可以找到好工作吗?
  • 告别繁琐接线:KMS-4-WF无线模块+3D打印外壳,打造你的桌面物理快捷键
  • 国内主流UV平板打印机品牌推荐 - 奔跑123
  • 2026苏州风口风阀厂家推荐及行业应用解析 - 品牌排行榜
  • 2026 杭州萧山区梵克雅宝卡地亚回收指南,认准中检资质不踩隐形扣费坑 - 奢侈品回收评测
  • 2026年6月智慧泵房直销厂家推荐,一体化智慧泵房/潜水排污泵/一体化加压泵站/控制柜,智慧泵房源头厂家哪家靠谱 - 品牌推荐师
  • 2026年众智商学院资料和班期怎么确认?官网报名咨询入口怎么选 - 众智商学院职业教育
  • 2006最新长三角管道CCTV检测服务企业推荐 - 奔跑123
  • 石家庄闲置名包回收,2026这五家机构谁更靠谱? - 奢侈品回收测评
  • Boss Show Time:3步掌握招聘时间可视化,告别无效投递的求职指南
  • Birdtray未来路线图:Wayland支持、新功能规划和社区发展展望
  • 终极macOS鼠标光标个性化指南:Mousecape让你的桌面焕然一新