Oops!
Many thanks

Leonardo


Il giorno martedì 15 settembre 2015 12:32:02 UTC+2, Tim Holy ha scritto:
>
> `next` requires a second argument, the `state` variable. Your code doesn't 
> pass a second argument, which is why you're getting the error. 
>
> --Tim 
>
> On Tuesday, September 15, 2015 08:18:09 AM Leonardo wrote: 
> > Sorry, 
> > but now I have some doubt relative to concatenation for my redefined 
> Array. 
> > 
> > In my exampled (attached) I've redefined AbstractArray creating a simple 
> > container for an Array, and I redefined also start() / next() / done() 
> > calling same operations for internal Array, but in following few lines 
> > of code: 
> > 
> > a = MyArr{2}(1,2) 
> > a[1,1] = "hello" 
> > a[1,2] = "world" 
> > cat(1, a, ["bob" "alice"]) 
> > 
> > cat() fails with following error: 
> > 
> > ERROR: MethodError: `next` has no method matching 
> > next(::Array{AbstractString,2}) 
> > Closest candidates are: 
> >    next(::Array{T,N}, ::Any) 
> >    next(::AbstractArray{T,N}, ::Any) 
> >   in _unsafe_batchsetindex! at multidimensional.jl:328 
> >   in setindex! at abstractarray.jl:572 
> >   in cat_t at abstractarray.jl:840 
> >   in vcat at abstractarray.jl:861 
> > 
> > Anyone can indicate me what MUST be reimplemented for AbstractArray{T,N} 
> > to support concatenation operations? 
> > 
> > Many thanks in advance 
> > 
> > Leonardo 
> > 
> > Il 13/09/2015 09:48, Leonardo ha scritto: 
> > > Many thanks! 
> > > I've understood that parametric type and number of dimension are 
> > > necessary, then I can write something like: 
> > > type MyArr{N} <: AbstractArray{String,N} 
> > > ... 
> > > end 
> > > 
> > > but, cause I want constructor receives the range of components for 
> > > each dimension like: 
> > > a = MyArr{3}(2,3,4) 
> > > I MUST ensure that parametric dimension be consistent with passed 
> > > number of indexes, highlighting (with an Error) that forms like: 
> > > a = MyArr{3}(2,3) 
> > > are illegal (see my attached example) 
> > > 
> > > (maybe OT: I think that using Integer as Type Parameter is a bit 
> > > confusing for people like me that have developed by many year in other 
> > > languages with generics as Java, C++, C# because use of a 
> > > object-parameter opposed to conventional type-parameter is a bit odd; 
> > > see also 
> https://groups.google.com/forum/#!topic/julia-users/3NM7tZV5buQ ) 
> > > 
> > > Leonardo 
> > > 
> > > P.S. surprisingly chapters 
> > > http://docs.julialang.org/en/release-0.4/manual/interfaces/ and 
> > > http://docs.julialang.org/en/latest/manual/interfaces/ are 
> unavailable 
> > > into relative PDFs on readthedocs.org 
> > > 
> > > Il 11/09/2015 14:46, Matt Bauman ha scritto: 
> > >> On Friday, September 11, 2015 at 3:11:48 AM UTC-4, Leonardo wrote: 
> > >>     I like to have a /unique/ type that contains only a specified 
> > >>     type and that can handle any dimension, but only during object 
> > >>     instancing (not during subsequent lifecycle of object, also if 
> > >>     both phases are at runtime), than parametrized dimension (the 
> > >>     N in AbstractArray{T,N}) is not useful for me. 
> > >> 
> > >> You can have a constructor that deals with the parameter for you: 
> > >> 
> > >> MyArr(number_of_dimensions::Int) = MyArr{Any, number_of_dimensions}() 
> > >> 
> > >> I'm afraid I still don't understand why you want to do this, so my 
> > >> answers probably aren't all that helpful. 
> > >> 
> > >>     But - if I understood your indications - there is no way to do 
> > >>     this without redefine a bunch of methods. 
> > >>     At least, can I find somewhere a minimal list of these methods? 
> > >> 
> > >> That's correct.  Omitting the dimensionality isn't a supported way to 
> > >> subtype AbstractArray.  I suppose you can still do it, but being 
> > >> unsupported means that you're on your own to figure out what all 
> > >> needs to be re-implemented.  And unfortunately, I'm afraid that the 
> > >> list isn't so minimal.  It's a part of the AbstractArray definition 
> > >> that is very heavily leveraged in the base code to improve 
> > >> performance and specify behavior. 
> > >> 
> > >> You can start to get a sense of how heavily these parameters are used 
> > >> by looking at the methods defined for AbstractArray{T,1} 
> > >> (AbstractVector) and AbstractArray{T,2} (AbstractMatrix): 
> > >> 
> > >> julia> methodswith(AbstractVector) 
> > >> 151-element Array{Method,1}: … 
> > >> 
> > >> julia> methodswith(AbstractMatrix) 
> > >> 164-element Array{Method,1}: … 
> > >> 
> > >> Those don't even include methods defined for arbitrary dimensionality 
> > >> but still require N to be defined, like 
> > >> `ndims{T,N}(A::AbstractArray{T,N}) = N`. 
>
>

Reply via email to