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

时间:2016-11-17 10:24:27

标签: arrays julia

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

public $onInit() {
    this.message = 'worked!';
}

当我使用自定义类型

尝试此操作时
v = Array{Int32, 1}(0)
append!(v, 1)
append!(v, 2)
println(v)  # prints: Int32[1,2]

我收到以下错误:

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

我认为我必须'实施'ERROR: LoadError: MethodError: no method matching length(::Node) 方法,但不知道如何。

2 个答案:

答案 0 :(得分:7)

append!命令不会按照您的想法执行操作。您正在考虑push!命令。

append!命令将两个数组附加到。两个参数都需要是数组:

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

length必须实施 (该错误只是告诉你它试图读取第二个参数的数组长度并找到一些不是数组的东西。)

答案 1 :(得分:1)

试试这个

Base.append!(x::Array{Node,1}, val::Node) = push!(x, val)

然后你得到

append!(nodes, Node("a", 42))
1-element Array{Node,1}:
 Node("a",42)

你必须明确地为这个特定类型创建一个函数append!或任何Base函数有时(或者我可能总是没有检查过)不接受Any