On Sat, Jan 9, 2016 at 1:11 PM, Alexandr <[email protected]> wrote:
> Hello,
>
> I am trying to define the type of the input vector to be either Int or
> Float. In order to do that I defined a union:
>
> IntOrFloat = Union{Int, AbstractFloat}
>
> Next I write to functions definitions which I expected to be equivalent:
>
> #-------------------------------------#
> function f1(v::Array{IntOrFloat,1})
>      mean(v)
> end
> println( f1([1.0, 2.0]) )
> println( f1([1, 2]) )
>
> function f2(v::Vector{IntOrFloat})
>      mean(v)
> end
> println( f2([1.0, 2.0]) )
> println( f2([1, 2]) )
> #-------------------------------------#
>
> But when I run it I see an error:
>
> ERROR: LoadError: MethodError: `f2` has no method matching
> f2(::Array{Float64,1})
>
> Why is that?
> Vector{} and Array{...,1} are equivalent:
>
> julia> Array{IntOrFloat,1}==Vector{IntOrFloat}
> true

Which version are you using? `f1` shouldn't match either and it's a
bug if it does.

>
> --
> Alexandr

Reply via email to