Hi Jan, You have your syntax a little mixed up. The usage of:
Type[] actually declares an empty array with element type of `Type`. So you're first line: x = Array[] is actually creating an array of arrays. Likewise, you're seeing the error in Array[1] Because you're trying to put an Int[1] array into an array of arrays (and julia doesn't know how to make that conversion). The last error is unfortunate, because it seems that the call to `append!` is allocating space for the array you're appending but then fails when actually trying to put the 2nd array into the newly allocated space. Because `append!` is mutating, you're left with your original array mutated with the extra space, with the #undef. I think the semantics you're looking for are as follows: x = Int[] # declares an empty 1-d array with element type of `Int` y = [1, 2, 3] # literal syntax for creating an array with elements, (1, 2, 3). Type inference figures out that the elements are of type `Int` append!(x,y) # mutates the `x` array by appending all the elements of y to it; this works because they're both of the same type push!(x, 5) # adds a single element, 5, to the `x` array Feel free to read through the section in teh manual on arrays to get a better feel for what's going on. http://docs.julialang.org/en/latest/manual/arrays/ Cheers, -Jacob On Thu, Jul 17, 2014 at 8:21 AM, Jan Strube <[email protected]> wrote: > > > Hi List! > > I'm a particle physicist just getting started with some julia. I've been > using some python in the past but now I'm trying to use analyzing some lab > data as an excuse to learn Julia. > So far it looks like I'm going to stick with it for a while. > > I've been trying to play with basic image analysis, and I've come across > the following behavior: append! complains that it doesn't find a suitable > method for my call signature, but it does append an #undef. Is this > intended? > > Please see below for a session. > > > > _ _ _(_)_ | A fresh approach to technical computing > (_) | (_) (_) | Documentation: http://docs.julialang.org > _ _ _| |_ __ _ | Type "help()" to list help topics > | | | | | | |/ _` | | > | | |_| | | | (_| | | Version 0.3.0-rc1 (2014-07-14 02:04 UTC) > _/ |\__'_|_|_|\__'_| | > |__/ | x86_64-apple-darwin13.3.0 > > julia> x = Array[] > 0-element Array{Array{T,N},1} > > julia> append!(x, Array[1]) > ERROR: `convert` has no method matching convert(::Type{Array{T,N}}, > ::Int64) > in getindex at array.jl:121 > > julia> x > 0-element Array{Array{T,N},1} > > julia> append!(x, Array[[1]]) > 1-element Array{Array{T,N},1}: > [1] > > julia> append!(x, [1]) > ERROR: `convert` has no method matching convert(::Type{Array{T,N}}, > ::Int64) > in copy! at abstractarray.jl:197 > in append! at array.jl:475 > > julia> x > 2-element Array{Array{T,N},1}: > [1] > #undef >
