If I’m understanding the implementation of similar correctly, when there’s 
no more-specific method available, it just creates an Array. So I couldn’t 
define my own new AbstractArray subtype and have similar automatically 
change the type parameter when changing the number of dimensions.

On Wednesday, February 10, 2016 at 2:38:28 PM UTC-5, Mauro wrote:

`similar` does what you're looking for: 
>
> ``` 
> similar(array, [element_type=eltype(array)], [dims=size(array)]) 
>
> Create an uninitialized mutable array with the given element type and 
> size, based upon the given source array. 
> ``` 
>
> Note that this puts the burden onto the creator of the type. 
>
> On Wed, 2016-02-10 at 20:20, Yichao Yu <[email protected] <javascript:>> 
> wrote: 
> > On Wed, Feb 10, 2016 at 2:13 PM, Josh Langsfeld <[email protected] 
> <javascript:>> wrote: 
> >> Yeah, it does seem ill-posed in general. Still, it would nice if I 
> could do 
> >> this for at least some subtypes that use the same type parameter 
> pattern, 
> >> even if the behavior was undefined when it doesn't use the same 
> pattern. 
> >> 
> >> Is there any method of dynamically computing a new type by changing one 
> of 
> >> the parameters of a type known only at runtime? 
> >> 
> >> On Wednesday, February 10, 2016 at 1:04:14 PM UTC-5, Lutfullah Tomak 
> wrote: 
> >>> 
> >>> For AbstractArray, a caveat is the actual type may have more 
> parameters 
> >>> and cannot be sure about parameters' order. 
> > 
> > You can always get the parameters (.parameters field) and construct a 
> new type. 
>
> Does this always work?  Types can define their constructors as they 
> wish?  For instance: 
>
> julia> Array{Int,3}() 
> ERROR: MethodError:.... 
>
​

Reply via email to