"normal" types are by definition heap-allocated, and are always manipulated them through pointers. What you want is immutables <http://docs.julialang.org/en/release-0.4/manual/types/#immutable-composite-types>
immutable Stuff a::Int b::Int end # Also, for zeros to work, function zero(x::Type{Stuff}) Stuff(0, 0) end On Tuesday, May 10, 2016 at 4:04:37 PM UTC-4, Boylan, Ross wrote: > > I'm puzzled that a type consisting only of 2 integers doesn't qualify as > "bitstype". Further experiment shows that the array seems to be an array > of references, I don't know how to implement zero, and generally that I'm a > bit lost :) My goal is to get a densely packed array of data. I assume > that will use less memory and generate faster code; if not, maybe I should > change my goal. > > BTW, my real use has a type more heterogeneous than 2 Int's, so a solution > that uses a 2D array doesn't really generalize appropriately for me. > > module TT > import Base.zero > > type Stuff > a::Int > b::Int > end > > function zero(x::Stuff) > Stuff(0, 0) > end > > end > > julia> v=Array(TT.Stuff, 3) #as before > 3-element Array{TT.Stuff,1}: > #undef > #undef > #undef > > julia> s=TT.Stuff(3, 5) > TT.Stuff(3,5) > > julia> v=fill(s, 2) > 2-element Array{TT.Stuff,1}: > TT.Stuff(3,5) > TT.Stuff(3,5) > > julia> s.a=900 > 900 > > julia> v ###OOPS: every array element points to the same instance > 2-element Array{TT.Stuff,1}: > TT.Stuff(900,5) > TT.Stuff(900,5) > > julia> zero(TT.Stuff) # This is probably what needs to work for zeros() > to work > ERROR: MethodError: `zero` has no method matching zero(::Type{TT.Stuff}) > > !julia> zero(TT.Stuff(1, 1)) # this at least calls the right c'tor > TT.Stuff(0,0) > > > Ross > ________________________________________ > From: julia...@googlegroups.com <javascript:> [julia...@googlegroups.com > <javascript:>] on behalf of Lutfullah Tomak [tomak...@gmail.com > <javascript:>] > Sent: Tuesday, May 10, 2016 12:04 AM > To: julia-users > Subject: [julia-users] undefined reference error > > You need to initialize array entries if you don't have eltype as bitstype. > Here, undefined reference means you had not initialize the entry. And, full > type assignment works because it initializes the entry. > >