HarmonyOS 鸿蒙Next:struct里的变量能用泛型吗

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

HarmonyOS 鸿蒙Next:struct里的变量能用泛型吗
<markdown _ngcontent-qds-c237="" class="markdownPreContainer">

我尝试在struct里使用泛型变量,但它明显报错了

export struct List<T> {
  [@Link](/user/Link)
  dataList: T[]
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>
  • 除此之外我还发现UI Component的语法是独立的,上面的问题应该是UI Component不支持泛型,
  • 有没有其它方法可以实现我想要的功能,我放弃使用object[]是因为我需要操作的对象有一个确切的类型
</markdown>
2 回复

ArkTS不支持any、undefined和unknown类型。显式指定具体类型。 修改方案: 1)所有变量都应显式指定其具体类型 2)对于字面量,可以使用Record<>搭配as的形式指定类型。 你们怎么解决builderParam,我现在有个需求就是我希望组件可以自定义自己的树节点视图,所以我需要把builder传进去,这个builder的$$是每个组件各自的类型。在没有any的情况下我怎么去描述?别告诉我每一个都写一遍,这么弱智的解决方案,后续提供第三方库难不成让使用第三方库的人拷一份出来吗?

在HarmonyOS鸿蒙Next系统中,C语言的结构体(struct)本身不支持直接使用泛型编程的概念。泛型编程是高级编程语言(如C++、Java、C#等)中的特性,允许在编写函数、类或结构体时定义类型参数,从而使得代码能够跨不同类型的操作复用。

C语言的结构体是静态类型定义的,意味着在结构体声明时必须明确指定每个成员的具体类型。因此,传统的C结构体不支持像泛型那样的动态类型参数。

然而,在鸿蒙系统中,如果你需要在类似泛型的功能,可以考虑以下几种替代方案:

  1. 使用void指针:结构体成员可以使用void指针,然后在运行时根据实际需求进行类型转换。
  2. 宏定义:利用宏定义来创建不同类型的结构体,但这会牺牲代码的可读性和维护性。
  3. 使用高级语言:如果可能,使用支持泛型的高级语言(如C++)进行开发,然后将需要的功能通过接口暴露给C语言代码。

综上所述,HarmonyOS鸿蒙Next中的C结构体不支持泛型,但可以通过其他方式实现类似功能。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部