Type unions

In geometry, a two-dimensional point and a vector are not the same, even if they both have an x and y component. In Julia, we can also define them as different types as follows:

   # see the code in Chapter 6\unions.jl
type Point
    x::Float64
    y::Float64
end

type Vector2D
    x::Float64
    y::Float64
end

Here are the two objects:

  • p = Point(2, 5) that returns Point(2.0, 5.0)
  • v = Vector2D(3, 2) that returns Vector2D(3.0, 2.0)

Suppose we want to define the sum for these types as a point that has coordinates as the sum of the corresponding coordinates:

+(p, v)

This results in an ERROR: `+` has no method matching +(::Point, ::Vector2D) error message.

Even after defining the following, +(p, v) still returns the same error because of multiple dispatch (Julia ...

Get Getting Started with Julia now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.