سیستم نوع

    کوروش دارای یک سیستم نوع قوی و گویا است. کامپایلر تبدیل نوع ضمنی را زمانی که ایمن باشد انجام می‌دهد و زمانی که تبدیل‌ها می‌توانند ناایمن یا همراه با اتلاف اطلاعات باشند، نیاز به cast صریح دارد.

    تبدیل ضمنی ایمن

    اگر یک نوع بتواند بدون از دست دادن اطلاعات به طور ایمن به نوع دیگری تبدیل شود، کوروش تبدیل را به طور خودکار انجام می‌دهد.

    var a: int32 = 42;
    var b: int64 = a; // implicit cast from int32 to int64
    
    • int32 (عدد صحیح علامت‌دار ۳۲ بیتی) همیشه می‌تواند در int64 (عدد صحیح علامت‌دار ۶۴ بیتی) جای بگیرد.
    • کامپایلر این کار را به صورت ضمنی انجام می‌دهد، بنابراین به نحو خاصی نیاز نیست.

    تبدیل ناایمن / صریح

    اگر یک تبدیل می‌تواند ناایمن باشد، کامپایلر نیاز به cast صریح با استفاده از کلیدواژه cast دارد.

    var u: uint32 = 10;
    var i: int64 = @cast(int64, u); // Explicit unsafe cast from uint32 to int64.
    

    انواع پایه

    کوروش مجموعه‌ای از انواع داخلی را برای اعداد، نویسه‌ها، مقادیر بولی و اهداف ویژه ارائه می‌دهد. اینها بلوک‌های سازنده اساسی برنامه‌های شما هستند.

    TypeCategoryBit WidthSignedness
    intSigned Integer (default)32Signed
    int8Signed Integer8Signed
    int16Signed Integer16Signed
    int32Signed Integer32Signed
    int64Signed Integer64Signed
    int128Signed Integer128Signed
    uintUnsigned Integer (default)32Unsigned
    uint8Unsigned Integer8Unsigned
    uint16Unsigned Integer16Unsigned
    uint32Unsigned Integer32Unsigned
    uint64Unsigned Integer64Unsigned
    uint128Unsigned Integer128Unsigned
    intptrPointer-sized IntegerPointer widthSigned
    uintptrPointer-sized IntegerPointer widthUnsigned
    usizeSize / Index TypePointer widthUnsigned
    isizeSize / Index TypePointer widthSigned

    انواع ممیز شناور

    TypeDescriptionPrecision
    float1616-bit floating-point number (half precision)~3 decimal digits
    float3232-bit floating-point number (single precision)~7 decimal digits
    float6464-bit floating-point number (double precision)~15–16 decimal digits
    float128128-bit floating-point number (quadruple precision)~34 decimal digits

    انواع نویسه و بولی

    TypeDescriptionNotes
    char

    A single character unit (one code unit; multi-byte Unicode not allowed in '...').

    Unsigned; Represents ASCII/byte chars only

    bool

    Boolean values, either true or false.

    1-bit storage (typically padded to 8 bits)

    انواع ویژه

    TypeDescriptionNotes
    void

    Represents no value, commonly used for functions that do not return anything.

    Return type only

    نام‌های مستعار نوع (Type Aliases)

    می‌توانید برای انواع موجود نام مستعار ایجاد کنید. کامپایلر به طور خودکار این نام‌ها را هنگام استفاده گسترش می‌دهد.

    type rune = uint32;
    type my_int = int16;
    
    pub fn main() {
      const x: rune = 10;
      const y: my_int = 20;
    }
    

    توجه: نام‌های مستعار نوع را نمی‌توان به صورت محلی اعلان کرد. scope و قوانین اعلان آنها بعداً در این اسناد با جزئیات بیشتری پوشش داده خواهد شد.