Hi,

I have a module with a function that I'd like to be overloaded, one version 
should take as an argument a type that I declare somewhere else and later 
(i.e. this module is required before the argument type) and another version 
should be an Array of such a type. That's the idea.

Simple example: I have three files.

In my_module.jl:

function f(s)
    println(s.x)
end

function f(sl::Array{Any})
    for s in sl
        f(s)
    end
end

In my_type.jl:

type state
    x
    y
    z
end

In my_main.jl:

include("my_module.jl")
include("my_type.jl")

s1 = state(1.0, 5.0, 7.0)
s2 = state(2.0, 6.0, 8.0)
sl = [s1, s2]

println("f(s1)")
f(s1)
println("f(s2)")
f(s2)
println("f(sl)")
f(sl)

If I run: julia my_main.jl
I get this error: "ERROR: type Array has no field x" because it uses the 
first version of the function, nothing prevents it indeed.

I would like to find a way to make it understand it has to choose the 
second version of the function. How could I do that?

Thanks a lot,

Reply via email to