I'm very much in favor of overloading, if the meaning doesn't deviate to 
much.
Like this, you don't have to read any documentations, and the base 
functions become synonymous with a certain task. 
So if you want to add an element to some object, first thing you can try is 
to use push! and if that works, you are not forced to look up the 
documentation for that datatype.

By the way, it seems you're developing a mesh type. I still hope to unify 
mesh representation, which is admittedly not the simplest task. 
Maybe you can take inspirations from JFineale 
<https://github.com/PetrKryslUCSD/JFinEALE.jl>, Meshes 
<https://github.com/JuliaGeometry/Meshes.jl>, Meshes2 
<https://github.com/JuliaGeometry/Meshes2.jl>, MeshIO 
<https://github.com/JuliaIO/MeshIO.jl> and take part in the discussion in 
JuliaGeometry <https://github.com/JuliaGeometry/meta>.
Would be a shame, if everyone writes their own code and in the end, it all 
doesn't work together.
This is especially important for a unified visualization infrastructure.

Am Montag, 16. März 2015 14:11:54 UTC+1 schrieb Kristoffer Carlsson:
>
> Simple example. Let's say I have the type
>
> type Mesh
>     elements::Vector{Element}
>     node::Vector{Node}
> end
>
> and I want to add functions to add elements or nodes. I could either do 
> this by overloading push! like this:
>
> push!(mesh::Mesh, elem::Element) = push!(mesh.elements, elem)
>
> or add a new method
>
> addelement(mesh::Mesh, elem::Element) = push!(mesh.elements, elem)
>
> I know code where operators are heavily overloaded can be difficult to 
> read however, this case seems quite simple.
>
> Anyone have any advice for which way to prefer? What is more Julian?
>
> Best regards,
> Kristoffer Carlsson
>
>

Reply via email to