gpt4 book ai didi

javascript - GJS 中为数组定义 GObject 属性的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 11:32:16 27 4
gpt4 key购买 nike

我在 GJS GObject overrides 中看到大多数类型都有对应于 Javascript 类型的定义,但我应该如何为标准字符串数组定义属性?我想到的一些选择:

  • 使用 TYPE_OBJECT 和 GList,但是当我检索它时 GJS 会将其映射到数组吗?
  • 使用 TYPE_OBJECT 和带有“as”类型的 GVariant 并自行解压
  • 使用 TYPE_BOXED 和 TYPE_ARRAY,但是 TYPE_ARRAY 可以与 Javascript 的数组类型相媲美吗?

最佳答案

这目前是不可能的。订阅https://bugzilla.gnome.org/show_bug.cgi?id=727787有进展时得到通知。

我过去曾成功地使用了第二个选项(类型为 as 的 GVariant)。 GList 选项将不起作用,因为 GJS 不注意存储在 GList 中的值的类型。第三个选项我不确定。

这是一个展示如何使用 GVariant 选项的最小示例:

const GObject = imports.gi.GObject;
const GLib = imports.gi.GLib;

const MyClass = GObject.registerClass({
Properties: {
'prop': GObject.param_spec_variant('prop', 'Prop', 'Prop',
new GLib.VariantType('as'), null,
GObject.ParamFlags.READABLE),
},
}, class MyClass extends GObject.Object {
get prop() {
return new GLib.Variant('as', ['one', 'two']);
}
});

print(new MyClass().prop.deep_unpack());

(如果您不使用新的类语法,它仍然以与旧的 Lang.Class 类似的方式工作。)

关于javascript - GJS 中为数组定义 GObject 属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com