Your ExampleEvent is completely analagous to a C-like struct. With Stefan's
bit, you now have a single dimension array of ExampleEvent type (hence
ndims(events) is 1).

You can do this:
julia> events[1] = ExampleEvent("asdf",2,3,4,5,6,7)
ExampleEvent("asdf",2,3,4,5,6,7)

And if you have more, you can do this:
julia> push!(events, ExampleEvent("ghjk", 2,3,4,5,6,7))
1001-element Array{ExampleEvent,1}:
    ExampleEvent("asdf",2,3,4,5,6,7)
 #undef
   ⋮
 #undef
    ExampleEvent("ghjk",2,3,4,5,6,7)

Cameron

On Fri, Jul 22, 2016 at 1:48 PM, <[email protected]> wrote:

> Thanks Stefan!
>
> I thought it would be like declaring a struct array in c/c++ i.e.
> something like ExampleEvent events[2][1000]; Then set each field in the
> events array as I encounter the required value in my algo: e.g.
> events[1][1].fld1 = "ABC";  events[1][1].fld2 = 123;   etc
>
> How do I access elements in the events Vector since ndims(events) = 1? I
> don't see anything in the docs about indexing into a preallocated Vector
> data structure. I see methods like push! splice! etc but not anything that
> will let me use the elements of my preallocation on the fly.
>
>
> On Thursday, July 21, 2016 at 3:21:54 PM UTC-4, Stefan Karpinski wrote:
>>
>> It's a little unclear what you want to do that you can't figure out how
>> to accomplish. You can allocate an uninitialized vector of ExampleEvent
>> objects:
>>
>> julia> type ExampleEvent
>>                fld1::ASCIIString
>>                fld2::Int16
>>                fld3::Int64
>>                fld4::Int64
>>                fld5::Int64
>>                fld6::Int64
>>                fld7::Int64
>>        end
>>
>> julia> events = Vector{ExampleEvent}(1000)
>> 1000-element Array{ExampleEvent,1}:
>>  #undef
>>  #undef
>>  #undef
>>    ⋮
>>  #undef
>>  #undef
>>  #undef
>>
>>
>>
>>
>> On Thu, Jul 21, 2016 at 2:51 PM, <[email protected]> wrote:
>>
>>>
>>> Hi
>>>
>>> I was working on processing large data sets & historically I've used
>>> structs in C++ & other languages for this type of task. I attempted to use
>>> a Composite Type in Julia & preallocate a large array before filling it
>>> w/values as my algo processes the data.
>>>
>>> My example was:
>>>
>>> type ExampleEvent
>>>
>>>         fld1::ASCIIString
>>>         fld2::Int16
>>>         fld3::Int64
>>>         fld4::Int64
>>>         fld5::Int64
>>>         fld6::Int64
>>>         fld7::Int64
>>>
>>> end
>>>
>>> I googled around & from what I found, & all the docs examples I tried
>>> out, there isn't an obvious way to declare an array of composite type
>>> without having to do some work arounds.
>>>
>>> I liked the language in several other respects but it seems to be
>>> missing helpful tools to make the programmer's life easy. Am I missing
>>> something? If not, why is a data structure like this not easily available?
>>>
>>> thanks in advance
>>>
>>> best,
>>> A
>>>
>>
>>

Reply via email to