抽象型のパラメトリック型

2026年3月21日
1 分

抽象型のパラメトリック型は、次のように定義する。

julia> abstract type AbstractPoint{T} end

T は型パラメータだ。

さて、これを親とする Point2D{T} を定義する。

julia> struct Point2D{T} <: AbstractPoint{T}
         x::T
         y::T
       end

親子関係の確認をしてみよう。

julia> Point2D{Int} <: AbstractPoint
true

julia> Point2D{Int} <: AbstractPoint{Int}
true

julia> Point2D{Int} <: AbstractPoint{Number}
false

AbstractPointPoint2D{Int} の親であるのは、型パラメータをつけていないから。 AbstractPoint{Number} が親でないのは、Julia の型システムが不変(invariant)だから。