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 returnsPoint(2.0, 5.0)
v = Vector2D(3, 2)
that returnsVector2D(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 Julia: High Performance Programming 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.