Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 如何在数据类型';谁的领域?_Julia - Fatal编程技术网

Julia 如何在数据类型';谁的领域?

Julia 如何在数据类型';谁的领域?,julia,Julia,假设我有一个设计用于存储信息的类型,包括指向其他变量的链接: type MyList a::Int64 b::Int64 connections::Array MyList(a, b) = new(a, b, []) end 此链接函数将第二个变量的名称放入第一个连接列表中(如果我知道如何操作): 然后我可以通过以下方式检查连接: a1.connections -> [a2, a3, a4] 这样做: for conn in a1.connection

假设我有一个设计用于存储信息的类型,包括指向其他变量的链接:

type MyList
    a::Int64
    b::Int64
    connections::Array
    MyList(a, b) = new(a, b, [])
end
链接
函数将第二个变量的名称放入第一个
连接
列表中(如果我知道如何操作):

然后我可以通过以下方式检查连接:

a1.connections

-> [a2, a3, a4]
这样做:

for conn in a1.connections
    println(conn.a)
end

-> 
33
55
77
也就是说,如果我能够首先解决如何将变量的名称存储在
connections
数组中


或者我的方法不对?

为什么不能将第二个列表添加到连接中?如果我正确理解你的要求,它会成功的

请注意,这样在x1.connections中就不会得到x2的副本,而只是得到一个指向x2的指针

看:


为什么不能将第二个列表添加到连接中?如果我正确理解你的要求,它会成功的

请注意,这样在x1.connections中就不会得到x2的副本,而只是得到一个指向x2的指针

看:


为什么不使用
Ref
s链接呢?只是想一想:这里的术语真的很糟糕。
链接
/
连接
这几个词对我有误导性;它们似乎暗示了一个双向链接,而你在这里做的是一个定向链接。此外,您使用的术语
list
也会产生误导,因为您正在构建的似乎是一棵树,而不是“链表”。我会使用诸如“MyTree”、“NextNode”/“Children”之类的术语来代替。@Tassopapastylianou是的,我的最小工作示例有点过于简化了,如果不是真的脑死亡的话,但希望它能传达我试图做的事情的本质……为什么不使用
Ref
s链接呢?只是想一想:这里的术语真的很糟糕。
链接
/
连接
这几个词对我有误导性;它们似乎暗示了一个双向链接,而你在这里做的是一个定向链接。此外,您使用的术语
list
也会产生误导,因为您正在构建的似乎是一棵树,而不是“链表”。我会使用诸如“MyTree”、“NextNode”/“Children”之类的术语来代替。@Tassopapastylianou是的,我的最小工作示例有点过于简化,如果不是真的脑死亡的话,但希望它能传达出我试图做的事情的本质……谢谢。我确信它存储了所有数据(可能更大)。我必须仔细看一下…@daycaster如果这个答案满足你的问题(我相信是的),请接受它,这样这个问题就可以“关闭”了。@TasosPapastylianou OK。但我想知道Julia的元编程是否能做一些聪明的事情。但是这个答案是有效的。谢谢。我确信它存储了所有数据(可能更大)。我必须仔细看一下…@daycaster如果这个答案满足你的问题(我相信是的),请接受它,这样这个问题就可以“关闭”了。@TasosPapastylianou OK。但我想知道Julia的元编程是否能做一些聪明的事情。但这个答案是有效的。
a1.connections

-> [a2, a3, a4]
for conn in a1.connections
    println(conn.a)
end

-> 
33
55
77
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