
回复
本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。
ArkTS 提供了一套容器集,包括 Array、Map、Set 等类型,用于存储和管理数据。ArkTS 容器与 JavaScript 原生容器在行为上存在一些差异,需要开发者注意。
原生 API | ArkTS API |
---|---|
Array.from | collections.Array.from |
Array.slice | collections.Array.slice |
Map.entries | collections.Map.entries |
Map.keys | collections.Map.keys |
Map.values | collections.Map.values |
Set.add | collections.Set.add |
Set.delete | collections.Set.delete |
Set.has | collections.Set.has |
ArkTS 容器可以安全地在并发实例间传递,避免了数据竞争问题。但是,ArkTS 容器并不是线程安全的,内部使用了 fail-fast 机制。因此,在并发环境中使用 ArkTS 容器时,需要使用异步锁机制保证容器的安全访问。
以下是一个简单的示例,演示如何创建和操作 ArkTS 容器:
这段代码定义了一个名为 Index
的组件,并在组件中显示了一条文本消息 “Hello World”。点击按钮会创建 Array、Map 和 Set 容器,并输出容器的内容。
原生 API | ArkTS API | 差异点 |
---|---|---|
Array.length | collections.Array.length | 不允许设置 length |
Array.pop | collections.Array.pop | 不允许在遍历、访问过程中进行元素的操作 |
Array.push | collections.Array.push | 不允许在遍历、访问过程中进行元素的操作 |
Array.concat | collections.Array.concat | 不允许在遍历、访问过程中进行元素的操作 |
Map.new | collections.Map.create | 必须提供初始值 |
Map.entries | collections.Map.entries | 不支持 thisArg |
Map.keys | collections.Map.keys | 不支持 thisArg |
Map.values | collections.Map.values | 不支持 thisArg |
Set.add | collections.Set.add | 不允许在遍历、访问过程中进行元素的操作 |
Set.delete | collections.Set.delete | 不允许在遍历、访问过程中进行元素的操作 |
Set.has | collections.Set.has | 不支持 thisArg |
通过以上介绍,您可以了解到鸿蒙系统中 ArkTS 容器与原生容器的差异,以及 ArkTS 容器在并发中的应用。希望本文能够帮助您掌握鸿蒙系统中的并发编程技术,并开发出更优秀的鸿蒙应用。