Say I have a type that defines a model. Something like this:

abstract Model

type Results
# Details not shown here
end

type IFP{T <: FloatingPoint} <: Model
    # Model parameters
    rho::T
    beta::T
    r::T
    R::T
    gamma::T

    # Grid parameters for a
    n_a::Integer
    a_max::T
    a::Vector{T}

    # Parameters for y
    n_y::Integer
    y::Vector{T}
    P::Matrix{T}

    Sol::Results

end

I would like to be able to initialize an object of type IFP, work with it 
for a while, pass it to a solution routine, and then fill in the Sol field 
at a later time.

Is there a way to leave Sol as an uninitialized field and then fill it in 
after the solution has been determined (which will be after constructing 
the IFP object and playing around with it for a while)? I suppose one way 
would be to have the inner constructor directly call the solution routine 
to get the Sol object. However, I want to avoid that because I may want to 
manipulate IFP between its construction and actually solving the model it 
describes.
------------------------------

One more note. In this specific use case Sol could effectively be replaced 
by two other fields:

c::Matrix{T}
ap::Matrix{T}

Would that be an easier way to work with them as uninitialized fields? If 
so, why?

Reply via email to