добавляющего элемент в массив в Юле работает следующим образом:Юлия: Добавление элемента в массив пользовательских типов
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)
Я предполагаю, что я должен «внедрить» метод length
, но не знаю, как.
или просто используйте 'push!', Что, кажется, вы все равно пытаетесь сделать. –
Интересно, что 'append! (V, 1)' работает, хотя ... может быть там для удобства, но, согласно документации для 'append!', Он не должен ... не уверен, что это должно быть сообщено как ошибка или нет ... :) –
hm, я вижу, 'append! (v, 1)' работает, потому что 'length (1)' возвращает '1'. (длина (x :: Number) = 1; 'определена в number.jl строка 14) –