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

Reply via email to