Juliaのすべての具体的な型は葉型ですが、その逆は真ではないようです。例えば、Type{Int64}
は、枚葉式であるが、それは、コンクリートではありません:タイプType{Int64}
を持っている値がないのでJuliaの葉型の意味
julia> Type{Int64}.abstract
true
julia> Type{Int64}.isleaftype
true
私の理解では、これは理にかなっていることです。タイプInt64
は具体的なタイプDataType
です。ただし、Type{Int64}
には重要なサブタイプがないため、リーフタイプと見なされます。インスタンスを持つことができない
isleaftype(T)
Determine whether T is a concrete type that can have instances, meaning its
only subtypes are itself and Union{} (but T itself is not Union{}).
Type{Int64}
ので、最初の文は、それが葉のタイプではないことを示唆している:
しかし、isleaftype
のドキュメントは少し混乱しています。しかし、唯一のサブタイプがそれ自身であり、Union{}
であることは確かに真実です。したがって、2番目の文はそれがそうであることを示唆しています。
葉のタイプと具体的なタイプのドキュメントが混在していますか?そうであれば、意味は正しいですか?
良い質問です。 (1) 'typeof(x)== Type {Int}'の 'x'型はありませんが、' 'x :: Type {Int}'( 'x == Int')。 (1) "インスタンス"/"具体的なタイプ"のペアを定義していますか? 'Type'は' DataType'、 'TypeConstructor'、' TypeUnion'のサブタイプを持っています。また、 'DataType :: Type'と' Type :: DataType'の両方が有効です。型を値として扱うことは、あらゆる種類の奇妙さにつながります。 –
それは簡単ではありません。ここで関連する議論があります:https://github.com/JuliaLang/julia/issues/17086 – DNF