Hi guys,

This indeed solves the problem. Thank you.

Jan

Dňa streda, 10. februára 2016 16:42:45 UTC+1 Mauro napísal(-a):
>
> On Wed, 2016-02-10 at 16:37, Ravi S <[email protected] <javascript:>> 
> wrote: 
> > g(s::Union{Array{ASCIIString,1},Array{UTF8String,1}}) = println("here!") 
>
> Although, note that this only works for those two subtypes of 
> AbstractString and 
> not any others.  Whereas 
>
>   g{S<:AbstractString}(s::Vector{S}) = println("here!") 
>
> works for all subtypes of AbstractString. 
>
> > 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