在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
方法,但不知道如何.
该append!
命令没有按照您的想法执行.你正在考虑这个push!
命令.
该append!
命令将两个数组附加在一起.两个参数都需要是数组:
julia> append!(nodes, [Node("a", 42)])
1-element Array{Node,1}:
Node("a",42)
Run Code Online (Sandbox Code Playgroud)
没有length
必要实现
(该错误只是告诉你它尝试读取第二个参数的数组长度并发现不是数组的东西.)