GObject.ParamFlags.CONSTRUCT_ONLY 抛出错误,除非它也是可写的
GObject.ParamFlags.CONSTRUCT_ONLY throws error unless it's also WRITABLE
我正在尝试学习 gjs 并有一些我认为是关于 ParamFlags 的基本问题。
我正在创建一个子类并尝试使用 GObject.ParamFlags.CONSTRUCT_ONLY | GObject.ParamFlags.READABLE
作为其中一个参数。用例就像它听起来的那样,只能在构建期间设置它,然后才能读取它。我这样声明:
magic_word: GObject.ParamSpec.string(
"magic-word",
"Magic word",
"My magic word",
GObject.ParamFlags.CONSTRUCT_ONLY | GObject.ParamFlags.READABLE,
"magicword default value"
),
但这会在模块加载期间抛出以下错误。
GLib-GObject-CRITICAL **: 14:18:53.750: validate_pspec_to_install: assertion 'pspec->flags & G_PARAM_WRITABLE' failed
它仍然允许程序继续执行。
似乎停止此错误的唯一方法是也给它 WRITABLE 或 READWRITE 标志,并可能通过 getter/setter 实现所需的行为。但是 CONSTRUCT_ONLY 的目的似乎丢失了。我错过了什么?
G_PARAM_CONSTRUCT_ONLY
表示一个属性只能在构造时设置,暗示属性必须是可写的。换句话说,CONSTRUCT_ONLY
只是对 WRITABLE
.
的约束
为 G_PARAM_CONSTRUCT_ONLY
添加 JS 级支持的合并请求可能有助于阐明它在 GJS 中的工作原理:https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/377。请记住,这是在 2020 年 11 月才合并的。
我正在尝试学习 gjs 并有一些我认为是关于 ParamFlags 的基本问题。
我正在创建一个子类并尝试使用 GObject.ParamFlags.CONSTRUCT_ONLY | GObject.ParamFlags.READABLE
作为其中一个参数。用例就像它听起来的那样,只能在构建期间设置它,然后才能读取它。我这样声明:
magic_word: GObject.ParamSpec.string(
"magic-word",
"Magic word",
"My magic word",
GObject.ParamFlags.CONSTRUCT_ONLY | GObject.ParamFlags.READABLE,
"magicword default value"
),
但这会在模块加载期间抛出以下错误。
GLib-GObject-CRITICAL **: 14:18:53.750: validate_pspec_to_install: assertion 'pspec->flags & G_PARAM_WRITABLE' failed
它仍然允许程序继续执行。
似乎停止此错误的唯一方法是也给它 WRITABLE 或 READWRITE 标志,并可能通过 getter/setter 实现所需的行为。但是 CONSTRUCT_ONLY 的目的似乎丢失了。我错过了什么?
G_PARAM_CONSTRUCT_ONLY
表示一个属性只能在构造时设置,暗示属性必须是可写的。换句话说,CONSTRUCT_ONLY
只是对 WRITABLE
.
为 G_PARAM_CONSTRUCT_ONLY
添加 JS 级支持的合并请求可能有助于阐明它在 GJS 中的工作原理:https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/377。请记住,这是在 2020 年 11 月才合并的。