گونههای تازه و عملگرها
سلام اجازه میدهد گونههای تازه بسازید تا کد معنادارتر و امنتر شود.
نام تازه و گونهی متمایز
گونه شناسه = صحیح فقط نام دیگری برای صحیح است و با آن آزادانه قاطی میشود. اما گونه متر: صحیح گونهای تازه بر پایهی صحیح میسازد که با صحیح معمولی اشتباه گرفته نمیشود و میتواند روشها و عملگرهای خودش را داشته باشد.
گونه شناسه = صحیح
گونه متر: صحیح
روال +(دیگر: متر): متر:
برگشت ((این برگردان صحیح) + (دیگر برگردان صحیح)) برگردان متر
پایان
روال کیلومتر(): اعشار۶۴:
برگشت (این برگردان اعشار۶۴) / ۱۰۰۰.۰
پایان
پایان
روال ریشه:
ش := ۴۲ برگردان شناسه
سرچاپ ش + ۱
راه := ۱۲۰۰ برگردان متر
سرچاپ (راه + راه).کیلومتر()
پایانخروجی43
2.4
بازتعریف عملگرها
روشی که نامش خودِ عملگر است، مثل روال +(دیگر: بردار): بردار، آن عملگر را برای ساختار تعریف میکند. عملگرهای قابل بازتعریف: + - * / % ** == != < > <= >= وارونه [] []=.
ساختار بردار:
همگانی ایکس: صحیح = ۰
همگانی وای: صحیح = ۰
همگانی روال +(دیگر: بردار): بردار:
برگشت بردار { ایکس = این.ایکس + دیگر.ایکس، وای = این.وای + دیگر.وای }
پایان
همگانی روال ==(دیگر: بردار): منطقی:
برگشت این.ایکس == دیگر.ایکس و این.وای == دیگر.وای
پایان
پایان
روال ریشه:
الف := بردار { ایکس = ۱، وای = ۲ }
ب := بردار { ایکس = ۳، وای = ۴ }
سرچاپ الف + ب
سرچاپ الف == ب، (الف + ب) == بردار { ایکس = ۴، وای = ۶ }
پایانخروجیبردار {ایکس = 4, وای = 6}
false true
گوناگون
گوناگون<صحیح، رشته> مقداری است که میتواند یکی از چند گونه باشد. با همخوان روی نام گونهها، مقدار را با گونهی درستش بیرون بکشید.
روال شرح(م: گوناگون<صحیح، رشته>): رشته:
برگشت همخوان م:
صحیح ع => "عدد " + ع
رشته ر => "متن " + ر
پایان
پایان
روال ریشه:
ناپایا مقدار := ۲۱ برگردان گوناگون<صحیح، رشته>
سرچاپ شرح(مقدار)
مقدار = "خاموش"
سرچاپ شرح(مقدار)
پایانخروجیعدد 21
متن خاموش