No worries. Sorry the answer was so short! On Fri, Aug 12, 2016 at 6:45 AM, Stefan Kruger <[email protected]> wrote:
> Thank you for taking the time to answer what must be a common newbie query. > > On Thursday, 11 August 2016 15:45:01 UTC+1, Stefan Karpinski wrote: >> >> This is called "parametric invariance"; you can find the term if you >> search the Julia manual and archives of this list. >> >> On Thu, Aug 11, 2016 at 10:41 AM, Yichao Yu <[email protected]> wrote: >> >>> >>> >>> On Thu, Aug 11, 2016 at 8:52 PM, Stefan Kruger <[email protected]> >>> wrote: >>> >>>> This surprised me: >>>> >>>> function hello(data::Array{AbstractString, 1}) >>>> map(println, data) >>>> end >>>> >>>> julia> function hello(data::AbstractString) >>>> println(data) >>>> end >>>> hello (generic function with 1 method) >>>> >>>> julia> hello("hello") >>>> hello >>>> >>>> julia> function hello_array(data::Array{AbstractString, 1}) >>>> map(println, data) >>>> end >>>> hello_array (generic function with 1 method) >>>> >>>> julia> hello_array(["Hello"]) >>>> ERROR: MethodError: `hello_array` has no method matching >>>> hello_array(::Array{ASCIIString,1}) >>>> >>> >>> `T{A}` is not a subtype of `T{B}` even if `A<:B` >>> >>> `hello{T<:AbstractString}(data::Array{T,1})` >>> >>> >>>> >>>> I had expected that Array{AbstractString, 1} meant "1-d array of >>>> anything string-like" and that passing an >>>> array of ASCIIString would qualify, but I must be missing something >>>> central. >>>> >>>> How would I declare a function parameter that is an array that can hold >>>> any string type? >>>> >>>> Many thanks for any pointers. >>>> >>>> Stefan >>>> >>> >>> >>
