I’m still getting used to the type system in Julia. Is the following composite type,
mutable struct Point{Float64}
x
y
end
equivalent to
mutable struct Point
x::Float64
y::Float64
end
It seems like the answer is no?
I’m still getting used to the type system in Julia. Is the following composite type,
mutable struct Point{Float64}
x
y
end
equivalent to
mutable struct Point
x::Float64
y::Float64
end
It seems like the answer is no?
You’re correct that the answer is no. See: Types · The Julia Language
Your first type has a type parameter with the name Float64
which does absolutely nothing. The fields x
and y
can still be of any type. Moreover, the fact that the type parameter has a name which is the same as an existing type (Float64
) is totally irrelevant.
Your second type, on the other hand, actually restricts the x
and y
fields to be of type Float64
.
To implement a parametric Point
type, you want something like this:
mutable struct Point{T}
x::T
y::T
end
which creates a struct with a parameter named T
and two fields which must both be of that same type T
.