Say I defined
julia> f(x::Number, g) = g(x)
f (generic function with 1 method)
julia> f(x::Array{Number, 1}, g) = f.(x)
f (generic function with 2 methods)
julia> g(x) = 2x
g (generic function with 1 method)
When calling f
one method performs as expected but the other one fails to do so:
julia> f(1,g)
2
julia> f([1,1], g)
ERROR: MethodError: no method matching f(::Array{Int64, 1}, typeof(g))
Closest candidates are:
f(::Number, ::Any) at REPL[7]:1
f(::Array{Number,1}, ::Any) at REPL[8]:1
What’s more, the body of the second method seems fine:
julia> f.([1,1],g)
2-element Array{Int64,1}:
2
2
So I don’t understand why the second definition of f
does not catch the array argument?
Thank you very much in advance for any guidance.