• 子类型关系

    子类型关系

    如果对象 a 继承自 b, ab 的类型。 这种了类型关系扩展到 var, ref, ptr :

    1. proc isSubtype(a, b: PType): bool =
    2. if a.kind == b.kind:
    3. case a.kind
    4. of object:
    5. var aa = a.baseType
    6. while aa != nil and aa != b: aa = aa.baseType
    7. result = aa == b
    8. of var, ref, ptr:
    9. result = isSubtype(a.baseType, b.baseType)