(Follow along with the code in Chapter 6\type_hierarchy.jl
.)
In Julia, every value has a type, for example, typeof(2)
is Int64
(or Int32
on 32-bit systems). Julia has a lot of built-in types, in fact, a whole hierarchy starting from the type Any
at the top. Every type in this structure also has a type, namely, DataType
, so it is very consistent: typeof(Any)
, typeof(Int64)
, typeof(Complex{Int64})
, and typeof(DataType)
all return DataType
. So, types in Julia are also objects; all concrete types, except tuple types, which are a tuple of the types of its arguments, are of type DataType
.
This type hierarchy is like a tree; each type has one parent given by the super
function:
super(Int64)
returnsSigned
super(Signed)
returnsInteger
super(Integer)
returnsReal
super(Real)
returnsNumber
super(Number)
returnsAny
super(Any)
returnsAny
A type can have a lot of children or subtypes
as follows:
subtypes(Integer)
form5-element Array{Any,1}
that contains...