GLib.Variant 新建空数组

GLib.Variant new empty array

Documentation 表示 child_type must be non-None if n_children is zero。所以我无法得到它。这里的逻辑在哪里?我应该为空数组使用什么类型? 这是我的示例代码:

from gi.repository import GLib
child_type = None
child_value = None
result_value = GLib.Variant.new_array(child_type, child_value)

这是输出:

./test.py:5: Warning: g_variant_new_array: assertion 'n_children > 0 || child_type != NULL' failed
  result_value = GLib.Variant.new_array(child_type, child_value)
Traceback (most recent call last):
  File "./test.py", line 5, in <module>
    result_value = GLib.Variant.new_array(child_type, child_value)
TypeError: constructor returned NULL

当我创建非空数组时 - 一切正常。我可以按子项目的类型定义 child_type。但是我卡住了一个空数组。

有人知道吗?

P.S。 child_value = [] 无效

What type should I use for an empty array?

与您用于 non-empty 数组的类型相同。 GVariant 数组是强类型的,因此 as 类型的空数组在语义上不同于 au 类型的空数组。您需要指定数组中 的元素类型,如果它不为空的话。

(从技术上讲,数组元素的类型实际上对数组的序列化形式的对齐要求有所不同,即使数组为空也是如此。所以这是一个实际的区别,也是一个纯粹的语义上的区别一个。)