줄리아의 모든 구체적인 유형은 리프 유형이지만, 그 반대는 사실이 아닌 것으로 보입니다. 예를 들어, 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{}
이기 때문에 사실입니다. 따라서 두 번째 문장은 그것이 그렇다는 것을 나타냅니다.
설명서가 리프 유형과 구체적인 유형을 섞어 쓰고 있습니까? 그렇다면 어떤 의미가 맞습니까?
좋은 질문입니다. 한 점을 분명히하기 위해서 : (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