Could you please specify what should population.infected return? Could you 
provide an interface?

Right now it seems like you want something like this:

type Individual end

type Population
    individuals::Vector{Individual}
end

setindex!(p::Population, i::Individual, index...) = p.individuals[index...] 
= i
getindex(p::Population, index) = p.individuals[index]
infected(i::Individual) = i.infected
vaccinated(i::Individual) = i.vaccinated

Usage:
population[index] = Individual() # set new individual
infected(population[index])      # gets the infected property of individual 
at index
vaccinated(population[index])    # ...

But you don't really need functions for these things...


On Saturday, June 4, 2016 at 2:19:02 PM UTC+2, Christopher Fisher wrote:
>
> I was wondering if someone would be willing to help me with creating 
> user-defined types. I've been using Julia for about two years now but I am 
> new to the idea of creating custom types. I'm trying to create a population 
> of agents/individuals in a simple epidemiological simulation. I would like 
> the population of individuals to be structured as a  2 dimensional array 
> with rows as individuals and columns as properties. This would be somewhat 
> similar to a DataFrame, but potentially more flexible. I want to be able to 
> index an individual like so: population[1]. This woud list all of the 
> information for individual 1.  I would also like to be able to look at an 
> attribute across individuals: population.infected or population[:infected]. 
> At the same time, I would like to have to flexibility of using an array to 
> keep track of individuals: typeof(population.history[1]) is Array{Int64,1}. 
> Based on existing documentation and examples, I have only been able to 
> create individuals but cannot figure out how to create a population as 
> described above:
>
> type Person
>     infected::Int64
>     vaccinated::Int64
>     dead::Int64
>    history::Array{Int64,1}
> end
>
> Any help would be greatly appreciated. 
>

Reply via email to