gpt4 book ai didi

julia - 两个结构可以相互引用吗? - Julia

转载 作者:行者123 更新时间:2023-12-05 03:20:59 29 4
gpt4 key购买 nike

我有一个包含相同类型字段的结构,我无法在创建时分配该字段。 Julia 似乎不喜欢以下内容。 (它吐出一个循环引用投诉。)我打算将问题归结为它的本质

mutable struct Test
test:: Union{Test,Nothing}
end
t1 = Test(nothing)
t2 = Test(nothing)
t1.test = t2
t2.test = t1
  1. 实现这一目标的正确方法是什么? (例如,我如何指向我的伙伴,谁可以将我指向他的伙伴?)
  2. 另外,以上是目前拥有初始“空”字段的正确方法吗?

最佳答案

您提出的是一种正确的方法,最初没有nothing 字段。

或者你可以这样做:

julia> mutable struct Test
test::Test
Test(t::Test) = new(t)
Test() = new()
end

julia> t1 = Test()
Test(#undef)

julia> t2 = Test()
Test(#undef)

julia> t1.test = t2
Test(#undef)

julia> t2.test = t1
Test(Test(Test(#= circular reference @-2 =#)))

你有临时 #undef 字段的地方。

另见 Incomplete Initialization Julia 手册的一部分。

编辑

使用标准 Vector{Any} 的循环引用示例:

julia> x = Any[]
Any[]

julia> push!(x, x)
1-element Vector{Any}:
1-element Vector{Any}:#= circular reference @-1 =#

关于julia - 两个结构可以相互引用吗? - Julia ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73058490/

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