Types in Julia are invariant:

If T1<:T2 is true
then A1{T1}<:A1{T2} is false (unless T1==T2).

Now setting T1=Float64 and T2=Union( Int64, Float64) means
Vector{Float64}<:Vector{Union( Int64, Float64)} is false.  Thus the no
method error.

On Thu, 2015-04-02 at 21:32, Michael Francis <[email protected]> wrote:
> Is the following expected behavior for union types, I'm assuming yes ? 
>
> v = Union( Int64,Float64 )[]
> push!( v, 1.2)
> push!( v, 1)   # works 
>
> f( v::Union(Int64,Float64)...) = v 
> f( [ 1.2 ]...) # Works
>
> f( v::Vector{Union( Int64, Float64)}) = v 
> f( [ 1.2 ])    # 'f' has not method matching f(::Array{Float64,1})
>
> At first glance I'd expect the last case to work as well. 

Reply via email to