You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中两个结构体能否互相引用?实现方法及空字段咨询

问题解答

1. 实现结构体互相引用的正确方式

你给出的代码本身就是正确实现两个可变结构体互相引用的方式。Julia 允许可变结构体(mutable struct)的字段引用自身类型,只要在初始化时先给一个合法的占位值(比如nothing),之后再修改字段指向对方即可。

实际运行这段代码不会报错,因为mutable struct支持字段的后续修改,循环引用在 Julia 中是被允许的:

mutable struct Test
    test::Union{Test, Nothing}
end
t1 = Test(nothing)
t2 = Test(nothing)
t1.test = t2
t2.test = t1

执行后t1.test会指向t2,t2.test会指向t1,形成合法的循环引用。

2. 设置结构体初始空字段的正确性

用Union{Test, Nothing}定义字段类型并以nothing作为初始值,是设置这类空字段的正确且常用的方式。

因为 Julia 要求结构体的所有字段在创建时必须被初始化,不能留空。nothing作为 Julia 内置的“空值”占位符,刚好可以用来表示字段暂时未指向有效对象,后续再通过赋值修改为目标引用。如果更强调“缺失值”语义,也可以用Union{Test, Missing}并以missing作为初始值,但nothing在这类引用场景下更常用。

内容的提问来源于stack exchange,提问作者Alan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:15:37