Juliaのパラメトリックタイプは、メモリ内に異なるレイアウトを含むタイプのファミリを実際に定義します。私はこれが複合型のフィールドの名前と数についても機能するのだろうかと思っていましたか?簡単な例は次のようなものになるだろう:Juliaでタイプ定義を特化できますか?
type mytype{Float64}
a::Float64
b::Float64
end
type mytype{Int64}
a::Int64
end
これは私にmytype
を再定義するためのエラーが発生します。
ここでは、の型パラメータがで、そのうちの1つがInt64
だった場合は2つのフィールドが必要です。 (実際は私が望むのはもっと複雑ですが、これは基本的な例です)。上記で抽象的な型と<:
などを持つと想像することができます。
これは他の言語では可能ではないかもしれないが、私にとってはコンパイラが関数を特殊化するのと同じように理解できるはずです。結局のところ、実際の(コンパイルされた)コードには具体的な型が含まれ、すべてがコンパイラによって認識されます。 (真のダイナミックタイプの場合、おそらくカプセル化の追加層がこの場合必要でしょうか)
おそらく、同様の結果を達成する別の方法がありますか?