g(s::Union{Array{ASCIIString,1},Array{UTF8String,1}}) = println("here!")
Regards,
Ravi
On Wednesday, February 10, 2016 at 9:04:49 PM UTC+5:30, Mauro wrote:
>
> This is because Julia's types are invariant (it's easy to find in the
> documentation once you know what to look for):
>
> g{S<:AbstractString}(s::Vector{S}) = println("here!")
>
> On Wed, 2016-02-10 at 16:23, Ján Dolinský <[email protected]
> <javascript:>> wrote:
> > Hi,
> >
> > I am facing the following dispatch problem:
> >
> > typealias MyString AbstractString
> >
> > g(s::Vector{MyString}) = println("here!")
> > g(s::MyString) = println("there!")
> >
> > a = ["asd", "bvc", "qwerty"]
> > b = ["asdť", "bvc", "qwerty"]
> >
> >
> > println(typeof(a))
> > Array{ASCIIString,1}
> > println(typeof(b))
> > Array{UTF8String,1}
> >
> > julia> g(a)
> > ERROR: MethodError: `g` has no method matching g(::Array{ASCIIString,1})
> >
> > julia> g(b)
> > ERROR: MethodError: `g` has no method matching g(::Array{UTF8String,1})
> >
> > julia> g(b[2])
> > there!
> >
> > julia> g(a[2])
> > there!
> >
> > How do I make the method g(s::Vector{MyString}) accept both vector of
> > ASCIIString's or UTF8String's ? I expected the supertype AbstractString
> to
> > automatically match the both cases.
> >
> > Thanks,
> > Jan
> >
> > p.s. I am designing some functions that consumes filesystem paths. I
> assume, it
> > is good idea to make those paths to be ::AbstractString ; I see many
> functions
> > related to filesystem in Julia manual to consume or return
> ::AbstractString
>