2

例如,我有一系列Event对象,其中Event是具有不同专业化的层次结构的基类(例如HolidayEventSickDayEvent)。基类有一些字段(例如dateemployee)并且每个专业化都添加了自己的字段集(例如HolidayEvent将具有holidayNameSickDayEvent将具有numDays)。

有没有办法以一种很好的方式对 HDF5 中的多态数据元素进行建模?好的,我的意思是明显的替代方案 - 创建一个具有所有字段的并集和类型判别式的复合类型 - 可能会浪费大量存储空间,特别是当特化有许多不同原子类型的独特字段时,并且当数字专业领域的数量变化很大,要求联合与专业领域的最大数量一样大。

4

2 回答 2

0

这个要求太高级了,我觉得HDF5不能直接支持这个功能。

我能想到的一种方法是使用 2 个 HDF5 数据集来描述逻辑多态类型的数据集。

首先,您创建一个主数据集,它涵盖了您的超类的所有字段,即您的示例中的事件。此外,该数据集还需要维护对另一个辅助数据集的引用,即您的示例中的HolidayEvent/SickDavEvent,它涵盖了特定子类的所有扩展字段。因此,您需要创建与此处的类一样多的复合数据类型,但对于每个子类的复合数据类型,仅包含扩展字段。

如果您不想浪费任何额外的空间但仍然使超类多态,我认为这是唯一的方法。因为不同子类的扩展字段需要不同的存储空间,正如您所提到的,在单个数据集中维护所有唯一字段的效率非常低。

于 2013-12-20T16:40:35.257 回答
0

在 HDF5 中,您可以创建任意复合类型。hdf5 不知道它们之间是否有关系。所以我建议为层次结构中的每个类类型创建一个 Hdf5 类型。

请参阅此处了解更多信息。

于 2013-12-17T07:25:42.097 回答