درس ۱۶ از ۲۵ · داده‌ها و گونه‌ها

گونه‌های تازه و عملگرها

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

نام تازه و گونه‌ی متمایز

گونه شناسه = صحیح فقط نام دیگری برای صحیح است و با آن آزادانه قاطی می‌شود. اما گونه متر: صحیح گونه‌ای تازه بر پایه‌ی صحیح می‌سازد که با صحیح معمولی اشتباه گرفته نمی‌شود و می‌تواند روش‌ها و عملگرهای خودش را داشته باشد.

type-alias.salam
گونه شناسه = صحیح

گونه متر: صحیح
    روال +(دیگر: متر): متر:
        برگشت ((این برگردان صحیح) + (دیگر برگردان صحیح)) برگردان متر
    پایان
    روال کیلومتر(): اعشار۶۴:
        برگشت (این برگردان اعشار۶۴) / ۱۰۰۰.۰
    پایان
پایان

روال ریشه:
    ش := ۴۲ برگردان شناسه
    سرچاپ ش + ۱
    راه := ۱۲۰۰ برگردان متر
    سرچاپ (راه + راه).کیلومتر()
پایان
خروجی43 2.4

بازتعریف عملگرها

روشی که نامش خودِ عملگر است، مثل روال +(دیگر: بردار): بردار، آن عملگر را برای ساختار تعریف می‌کند. عملگرهای قابل بازتعریف: + - * / % ** == != < > <= >= وارونه [] []=.

operator.salam
ساختار بردار:
    همگانی ایکس: صحیح = ۰
    همگانی وای: صحیح = ۰
    همگانی روال +(دیگر: بردار): بردار:
        برگشت بردار { ایکس = این.ایکس + دیگر.ایکس، وای = این.وای + دیگر.وای }
    پایان
    همگانی روال ==(دیگر: بردار): منطقی:
        برگشت این.ایکس == دیگر.ایکس و این.وای == دیگر.وای
    پایان
پایان

روال ریشه:
    الف := بردار { ایکس = ۱، وای = ۲ }
    ب := بردار { ایکس = ۳، وای = ۴ }
    سرچاپ الف + ب
    سرچاپ الف == ب، (الف + ب) == بردار { ایکس = ۴، وای = ۶ }
پایان
خروجیبردار {ایکس = 4, وای = 6} false true

گوناگون

گوناگون<صحیح، رشته> مقداری است که می‌تواند یکی از چند گونه باشد. با همخوان روی نام گونه‌ها، مقدار را با گونه‌ی درستش بیرون بکشید.

variant.salam
روال شرح(م: گوناگون<صحیح، رشته>): رشته:
    برگشت همخوان م:
        صحیح ع => "عدد " + ع
        رشته ر => "متن " + ر
    پایان
پایان

روال ریشه:
    ناپایا مقدار := ۲۱ برگردان گوناگون<صحیح، رشته>
    سرچاپ شرح(مقدار)
    مقدار = "خاموش"
    سرچاپ شرح(مقدار)
پایان
خروجیعدد 21 متن خاموش