0

زبان برنامه نویسی پرل

 
golami1223
golami1223
کاربر برنزی
تاریخ عضویت : آبان 1389 
تعداد پست ها : 683
محل سکونت : بوشهر

عبارات
پنج شنبه 2 دی 1389  7:33 AM

عبارات

یک عبارت می‌تواند چندین ارسال پیام داشته باشد. در این مثال پیام‌ها به ترتیب ساده پردازش می‌شود. پیام‌های یگانه اولویت بیشتری داشته و پس از آن پیام‌های دوگانه و پیام‌های کلمات کلیدی قرار دارند. به عنوان مثال

3 factorial + 4 factorial between: 10 and: 100

که بصورت زیر ارزیابی می‌شود:

  1. 3 پیام factorial را درپافت می‌کند که پاسخ 6 است.
  2. 4 پیام factorial را درپافت می‌کند که پاسخ 24 است.
  3. 6 پیام + را به همراه 24 به عنوان آرگومان دریافت کرده که پاسخ 30 است.
  4. 30 گیرنده پیام :between:and را به همراه 10 و 100 به عنوان آرگومان درسافت کرده که پاسخ true است.

پاسخ آخرین پیام به عنوان نتیجه نهایی عبارت ارسال می‌گردد.

پارانتزها می‌توانند ترتیب ارزیابی را تغییر دهند.

(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

با این تغییر نیاز به استفاده از یک متغیر موقت برطرف خواهد شد.

تشکرات از این پست
دسترسی سریع به انجمن ها