I'm new to programming in Julia (I'm coming from Java) and some Julia concepts are still difficult to understand to me. What I intend is to replicate this Java code:
public class Archive<T extends Solution> {
public List<T> solutions;
public Archive() {
solutions = new ArrayList<>() ;
}
}
Then, I have defined the following Julia struct:
mutable struct Archive{T <: Solution}
solutions::Vector{T}
end
and I would like to define a constructor to inialize empty archives. In the case of an external constructor, I think that the code would look like this:
function Archive()
return Archive([])
end
Would it be possible to modify the constructor somehow to include the parametric type T?.
This is most likely the constructor you want:
Archive(T::Type{<:Solution}=Solution) =Archive(T[])
Then you can write Archive() or Archive(SomeType) if SomeType is a subtype of Solution.
Note that your definition:
function Archive()
return Archive([])
end
Is incorrect unless Solution is Any (and most likely it is not). You will get an error as [] is Vector{Any} and you require Archive to store subtypes of Vector{<:Solution}.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With