Thanks for those useful hints!

On Monday, February 15, 2016 at 2:49:04 PM UTC+1, Tim Holy wrote:
>
> True, but when you care about performance it's much better to write the 
> wrapper functions---the results will be inferrable, unlike manipulations 
> of 
> the parameters vector. 
>
> For Arrays, you already have the defined function `eltype` and `ndims`. If 
> your 
> types fall into some kind of hierarchy, then you may be able to use 
> subtyping. 
> For example: 
>
> julia> immutable MyWeirdArray{Sym,Len,T,N} <: AbstractArray{T,N} 
>            data::NTuple{Len,T} 
>        end 
>
> julia> ndims(MyWeirdArray{:zero_offset, 15, Float64, 1}) 
> 1 
>
> julia> eltype(MyWeirdArray{:zero_offset, 15, Float64, 1}) 
> Float64 
>
> Both base/ julia and the ColorTypes package contain good examples of how 
> to go 
> about this kind of manipulation. 
>
> Best, 
> --Tim 
>
> On Monday, February 15, 2016 05:28:19 AM Bart Janssens wrote: 
> > There is the parameters field of the types, but I'm not sure if that's 
> > considered private. You can do 
> > Array{Float64, 1}.parameters[2] 
> > to get 1, for example. 
> > 
> > On Monday, February 15, 2016 at 2:14:35 PM UTC+1, jw3126 wrote: 
> > > I have an instance of a parametric type, is there a canonical way to 
> get 
> > > the parameter values? 
> > > For example I could have some Array{T, d} and want to know whether T 
> is 
> > > Float64 and what its dimension is. 
> > > The only way of doing this I am aware of is writing code like: 
> > > 
> > > dimension{T, dim}(arr::Array{T, dim}) = dim 
> > > numbertype{T, dim}(arr::Array{T, dim}) = T 
> > > 
> > > Is there a built-in function to do this? And maybe a way to get 
> parameter 
> > > values for arbitrary types? 
> > > E.g. I have some instance of MyType{S, T, U, n} is and want to know U. 
> Do 
> > > I have to repeat code like the above each time I define a new 
> parametric 
> > > type? 
>
>

Reply via email to