عبارات
پنج شنبه 2 دی 1389 7:33 AM
یک عبارت میتواند چندین ارسال پیام داشته باشد. در این مثال پیامها به ترتیب ساده پردازش میشود. پیامهای یگانه اولویت بیشتری داشته و پس از آن پیامهای دوگانه و پیامهای کلمات کلیدی قرار دارند. به عنوان مثال
3 factorial + 4 factorial between: 10 and: 100
که بصورت زیر ارزیابی میشود:
پاسخ آخرین پیام به عنوان نتیجه نهایی عبارت ارسال میگردد.
پارانتزها میتوانند ترتیب ارزیابی را تغییر دهند.
(3 factorial + 4) factorial between: 10 and: 100
که معنای عبارت را تغییر داده و عبارت میان پارانتز در ابتدا ارزیابی گردیده و نتیجه ۱۰ میشود. ۱۰ پیام factorial را دریافت میکند که نتیجه ۳۶۲۸۸۰۰ است. و قسمت آخر در نهایت false تولید میکند.
بدلیل این که پیامهای دوگانه در اسمالتاک-۸۰ درونساخت نیستند اولویت برابر با یکدیگر داشته و بسادگی از چپ به راست ارزیابی میگردند. به همین دلیل عبارات مشابه در اسمالتاک ممکن است معنای متفاوت از آنچه که به صورت سنتی است داشته باشند.
3 + 4 * 5
پس از ارزیابی نتیجه ۳۵ است.
پیامهای یگانه را میتوان با نوشتن پشت سر هم به هم زنجیر نمود. به صورت زیر:
3 factorial factorial log
که فاکتوریل را به ۳ فرستاده و نتیجه را که ۶ است دوباره فاکتوریل ارسال میکند و از نتیجه ۷۲۰ لگاریتم میگیرد که نتیجه ۲.۸۵۷۳۳ است.
چند عبارت را میتوان پشت هم نوشت که هر کدام با یک . پایان مییابد. مثال پایین یک نمونه از window ایجاد کرده و آن را در یک متغیر ذخیره مینماید و به آن دو پیام میفرستد.
| window | window := Window new. window label: 'Hello'. window open.
اگر چندین پیام به یک گیرنده ارسال شود میتوان آنها را بصورت یک زنجیره جدا شده با ; نوشت.
(Window new) label: 'Hello'; open
با این تغییر نیاز به استفاده از یک متغیر موقت برطرف خواهد شد.