HarmonyOS 鸿蒙Next API12以后怎么遍历枚举,报错:Classes cannot be used as objects (arkts-no-classes-as-obj)

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next API12以后怎么遍历枚举,报错:Classes cannot be used as objects (arkts-no-classes-as-obj)

向各位请教下,有一个月没怎么写了,突然发现不知道怎么遍历枚举了。使用object.keys遍历枚举,报错:Classes cannot be used as objects (arkts-no-classes-as-obj)

版本API12

DevEco Studio 5.0.0 Releaseobject.keys

Build #DS-233.14475.28.36.503910

构建版本:5.0.3.910, built on November 1, 2024

Runtime version: 17.0.12+1-b1087.25 amd64

VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Windows 10.0

GC: G1 Young Generation, G1 Old Generation

Memory: 4096M

Cores: 24

Registry:

  idea.plugins.compatible.build=IC-233.14475.28


更多关于HarmonyOS 鸿蒙Next API12以后怎么遍历枚举,报错:Classes cannot be used as objects (arkts-no-classes-as-obj)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
ArkTS校验中有一条规则:arkts-no-classes-as-obj(ArkTS does not support using classes as objects (assigning them to variables, etc.) because in ArkTS, a class declaration introduces a new type, not a value)。所以ArkTS不支持将类用作对象(将它们赋值给变量等),所以不能遍历枚举类,如需该类操作建议使用线性容器。

更多关于HarmonyOS 鸿蒙Next API12以后怎么遍历枚举,报错:Classes cannot be used as objects (arkts-no-classes-as-obj)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


谢谢,我去试一下

在HarmonyOS鸿蒙系统中,Next API12及以后版本对于枚举的遍历和之前版本可能存在一些差异。针对你提到的报错“Classes cannot be used as objects (arkts-no-classes-as-obj)”,这通常表明你在代码中尝试将类当作对象来使用,这在鸿蒙系统的某些特定环境(如ArkTS)中是不被允许的。

对于枚举的遍历,在鸿蒙系统中,你应该使用标准的C++或ArkC++语法(如果适用)。以下是一个简单的枚举遍历示例:

enum Color { RED, GREEN, BLUE };

void printColors() {
    for (int i = RED; i <= BLUE; ++i) {
        // 假设你有一个函数可以根据枚举值返回对应的字符串
        std::string colorName = getColorName((Color)i);
        std::cout << colorName << std::endl;
    }
}

注意,这里的getColorName函数是一个假设的函数,你需要根据实际情况来实现它,将枚举值转换为对应的字符串表示。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部