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 
>

Reply via email to