I am using Version 0.4.0 (2015-10-08 06:20 UTC) I restarted Julia repl/intrpreter.
Below is a complete code where I am trying to solve my task in a two ways: 1) by defining a Union of the types 2) by specifying the type of elements in the input vector as "Number". (Is it correct to do it?) Because according to the types hierarchy here: https://en.wikibooks.org/wiki/Introducing_Julia/Types both Int and Float are subtypes of super type Number and Real. #------------------------------------# IntOrFloat = Union{Int, AbstractFloat} function ff1(v::Array{IntOrFloat,1}) mean(v) end println( ff1([1.0, 2.0]) ) function ff2(v::Vector{IntOrFloat}) mean(v) end println( ff2([1.0, 2.0]) ) function ff3(v::Vector{Number}) filter(x-> x>=1.5, v) end ff3([1.0, 2.0, 3.0, 5.0]) #------------------------------------# Output errors: ERROR: LoadError: MethodError: `ff1` has no method matching ff1(::Array{Float64,1}) ERROR: LoadError: MethodError: `ff2` has no method matching ff2(::Array{Float64,1}) ERROR: LoadError: MethodError: `ff3` has no method matching ff3(::Array{Float64,1}) #------------------------------------# On 1/9/2016 7:32 PM, Yichao Yu wrote: >> >> Which version are you using? `f1` shouldn't match either and it's a >> bug if it does. > > Also check if you've already defined another `f1` that does accept the > arrays of different types. > > And for why neither of them should match. See > http://julia.readthedocs.org/en/latest/manual/types/#parametric-composite-types > >> >>> >>> -- >>> Alexandr -- Alexandr
