On Thu, Sep 17, 2015 at 8:21 AM, <amik...@gmail.com> wrote: > 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
function f{T}(sl::Array{T}) ..... 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,