A Trait-ek egy olyan kiterjesztései a nyelvnek, amik lehetővé teszik, hogy fordítási időben információt nyerhessünk ki kifejezésekből és szimbólumokból.
TraitsExpression:
__traits ( TraitsKeyword , TraitsArguments )
TraitsKeyword:
isAbstractClass
isArithmetic
isAssociativeArray
isFinalClass
isFloating
isIntegral
isScalar
isStaticArray
isUnsigned
isVirtualFunction
isVirtualMethod
isAbstractFunction
isFinalFunction
isStaticFunction
isRef
isOut
isLazy
hasMember
identifier
getMember
getOverloads
getVirtualFunctions
getVirtualMethods
parent
classInstanceSize
allMembers
derivedMembers
isSame
compiles
TraitsArguments:
TraitsArgument
TraitsArgument, TraitsArguments
TraitsArgument:
AssignExpression
Type
Ha az argumentumai aritmetikai típusúak vagy olyan kifejezések amik típusa aritmetikai, akkor true-t ad vissza, egyébként false-ot. Ha nincs argumentuma, akkor false.
A program kimenete:
Olyan mint az isArithmetic, csak lebegőpontos típusokhoz.
Olyan mint az isArithmetic, csak egész (integrális) típusokhoz, beleértve a character típust is.
Olyan mint az isArithmetic, csak skalár típusokhoz.
Olyan mint az isArithmetic, csak előjel nélküli típusokhoz.
Olyan mint az isArithmetic, csak statikus tömb típusokhoz.
Olyan mint az isArithmetic, csak asszociatív tömb típusokhoz.
Ha az argumentumai absztrakt osztály típusúak vagy olyan kifejezések, amik típusa absztrakt osztály, akkor true-t ad vissza, egyébként false-ot. Ha nincs argumentuma, akkor false.
A program kimenete:
Olyan mint az isAbstractClass, csak final class típusokhoz.
Egy argumentuma van. Ha az argumentuma virtuális függvény, akkor true-t ad vissza, egyébként false-ot. Ha az argumentum olyan final függvény, ami nem definiál felül semmit, akkor false-ot ad vissza.
Olyan mint az isVirtualMethod, csak a final függvények esetén, amik nem definiálnak felül semmit, true-t ad vissza.
Egy argumentuma van. Ha az argumentuma absztakt függvény, true-t ad vissza, egyébként false-ot.
Egy argumentuma van. Ha az argumentuma final függvény, true-t ad vissza, egyébként false-ot.
Egy argumentuma van. Ha az argumentuma statikus függvény, azaz nincsen context mutatója, true-t ad vissza, egyébként false-ot.
Egy argumentumuk van. Ha az argumentum deklaráció, amennyiben a megfelelő argumentum ref, out vagy lazy akkor true-t adnak vissza, egyébként false-ot.
Az első argumentuma egy típus, aminek van tagja, vagy egy kifejezés aminek a típusának van tagja. A második argumentuma egy string. Ha ez a string valós tagja az adott típusnak, akkor true-t ad vissza, egyébként false-ot.
Egy argumentuma van, ami szimbólum. Viszaadja a szimbólum azonosítóját string literálként.
Két argumentuma van. Az első egy szimbólum, a második egy string. Az eredmény egy kifejezés, ami az első argumentumot és '.'-tal hozzáfűzve a második argumentumot, mint azonosítót tartlamazza.
Két argumentuma van. Az első egy osztály típus vagy egy osztály típusú kifejezés, a második egy string. A string-nek meg kell egyeznie az osztály egy tagfüggvényének a nevével. Az eredmény egy tuple, ami tartalmazza az összes túlterhelését az adott függvénynek.
A program kimenete:
Két argumentuma van. Az első egy osztály típus vagy egy osztály típusú kifejezés, a második egy string. A string-nek meg kell egyeznie az osztály egy tagfüggvényének a nevével. Az eredmény egy tuple, ami tartalmazza a virtuális túlterheléseit az adott függvénynek. Nem tartalmazza a final függvényeket, amik nem definiálnak felül semmit.
A program kimenete:
Olyan mint az getVirtualMethods, csak tartalmazza a final függvényeket is, amik nem definiálnak felül semmit.
Egy argumentuma van, aminek a kiértékelése egy szimbólum kell legyen. A visszatérési értéke az argumentum szimbólum szülőjének a szimbóluma.
Egy argumentuma van, ami osztály típus vagy egy osztály típusú kifejezés. Az eredmény típusa size_t, értéke pedig a byte-okban mért mérete az adott osztály egy futás idejű példányának. Ez az osztály statikus típusán alapszik, nem pedig a polimorfikus típusán.
Egy argumentuma van, egy típus vagy egy típus kifejezés. Az eredmény egy tuple, ami tartalmazza az összes tagját az adott típusnak, mint string literált. Ha ez a típus, osztály típus, akkor a bázis osztályok tagjai is bele kerünek az eredménybe. Minden tag csak egyszer szerepel, ismétlés nincs. A beépített elemek nem kerülnek az eredménybe
Egy argumentuma van, egy típus vagy egy típus kifejezés. Az eredmény egy tuple, ami tartalmazza az összes tagját az adott típusnak, mint string literált. A bázis osztályok tagjai nem kerünek az eredménybe. Minden tag csak egyszer szerepel, ismétlés nincs. A beépített elemek nem kerülnek az eredménybe
Két argumentuma van, ha azok ugyanazok a szimbólumok, akkor true-t ad vissza, egyébként false-ot
True-t ad vissza, ha minden argumentuma lefordul, azaz szemantikusan korrekt. Az argumentumok lehetnek szimbólumok, típusok vagy kifejezések, amik szintaktikusan helyesek. Nem lehetnek az argumentumok deklarációk vagy utasítások.
Használhatóság: