假设我有一种用于存储信息的类型,包括指向其他变量的链接:
type MyList
a::Int64
b::Int64
connections::Array
MyList(a, b) = new(a, b, [])
end
这个link
函数会将第二个变量的名称放入第一个变量的connections
列表中(如果我知道该怎么做):
function link(x_1::MyList, x_2::MyList)
push!(x_1.connections, #= name of =# x_2) # <------------- ?
end
然后我就能做到这一点:
a1 = MyList(11, 22)
a2 = MyList(33, 44)
a3 = MyList(55, 66)
a4 = MyList(77, 88)
link(a1, a2)
link(a1, a3)
link(a1, a4)
然后我可以检查连接:
a1.connections
-> [a2, a3, a4]
并做这样的事情:
for conn in a1.connections
println(conn.a)
end
->
33
55
77
也就是说,如果我可以首先解决如何在connections
数组中存储变量的名称。
或许我正在以错误的方式接近这个?
答案 0 :(得分:5)
为什么不能只将第二个列表添加到连接中?如果我理解你想要的东西,它就会做到这一点。
请注意,通过这种方式,您无法在x1.connections中获取x2的副本,而是只有指向x2的指针。
查找
julia> function link(x1::MyList, x2::MyList)
push!(x1.connections, x2)
end
julia> a1 = MyList(11, 22)
julia> a2 = MyList(33, 44)
julia> a3 = MyList(55, 66)
julia> link(a1, a2)
julia> link(a1, a3)
julia> for conn in a1.connections
println(conn.a)
end
33
55
julia> a2.a=333
333
julia> a3.a=555
555
julia> for conn in a1.connections
println(conn.a)
end
333
555