Görünüşe göre Julia'daki tüm beton türleri yaprak türleridir, ancak tersi doğru değildir. Örneğin, Type{Int64}
bir yaprak tipi ama somut değildir: tip Type{Int64}
sahip hiçbir değer olduğundanJulia cinsinden yaprak türünün anlamı
julia> Type{Int64}.abstract
true
julia> Type{Int64}.isleaftype
true
Benim anlayış, bu mantıklı olmasıdır. Int64
tipi, DataType
beton tipine sahiptir. Bununla birlikte, Type{Int64}
'un hiçbir önemli alt türü bulunmadığından, bir yaprak türü olarak kabul edilir. örneklerini olamaz
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}
, bu yüzden ilk cümle bir yaprak tipi olmadığını göstermektedir:
Ancak isleaftype
dokümantasyonu biraz kafa karıştırıcı. Ancak, tek alt türünün kendisi ve Union{}
olduğu doğrudur, bu yüzden ikinci cümle bunun olduğunu gösterir.
Yaprak tipleri ve beton türleri ile ilgili belgelerle belgeleniyor mu?
İyi soru. Sadece bir noktayı açıklığa kavuşturmak için: (x) = (Tür) tipinin (x) == Type {Int} 'türünde 'x' (x) 'inin (x)' inin (Int)' (yani x'in) olduğu bir x değil. == Int'). (1) bir "örnek"/"beton tipi" çifti tanımlar mı? 'Type' alt türlerine sahiptir:' DataType', 'TypeConstructor' ve' TypeUnion'. Ayrıca, her iki 'DataType :: Type' ve' Type :: DataType' da geçerlidir - türleri her çeşit tuhaflığa yol açan değer olarak ele alır. –
Bu kolay değildir. Burada ilgili bir tartışma var: https://github.com/JuliaLang/julia/issues/17086 – DNF