Julia:将元素追加到自定义类型数组中

Mic*_*ael 4 arrays julia

在Julia中向元数追加元素的工作方式如下:

v = Array{Int32, 1}(0)
append!(v, 1)
append!(v, 2)
println(v)  # prints: Int32[1,2]
Run Code Online (Sandbox Code Playgroud)

当我尝试使用自定义类型时

type Node
    label::String
    value::Int32
end
nodes = Array{Node, 1}(0)
append!(nodes, Node("a", 42))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: LoadError: MethodError: no method matching length(::Node)
Run Code Online (Sandbox Code Playgroud)

我假设我必须"实施"该length方法,但不知道如何.

Tas*_*nou 7

append!命令没有按照您的想法执行.你正在考虑这个push!命令.

append!命令两个数组附加在一起.两个参数都需要是数组:

julia> append!(nodes, [Node("a", 42)])
1-element Array{Node,1}:
 Node("a",42)
Run Code Online (Sandbox Code Playgroud)

没有length必要实现
(该错误只是告诉你它尝试读取第二个参数的数组长度并发现不是数组的东西.)