khodadadi.net
زبان برنامه نویسی ارلنگ - اتمها
اَتُم (Atoms)
یک دلیل وجود داره که چرا نمیشه متغییرها با حروف کوچک شروع بشن: اتمها. اتمها ثابتهایی هستند که مقدارشون با اسمشون یکیه. اتم cat یعنی "cat". نمیتونین باهاش بازی کنین، نمیتونین تغییرش بدین و نمیتونین تیکهتیکهش کنین. اون یه cat هست و با اون سروکار دارین.درحالی که یک تک کلمه که با یک حرف کوچک شروع شده یعنی یک اتم، راه بیشتر هم برای تعریف یک اتم وجود داره:
1> atom.
atom
2> atoms_rule.
atoms_rule
3> atoms_rule@erlang.
atoms_rule@erlang
4> 'Atoms can be cheated!'.
'Atoms can be cheated!'
5> atom = 'atom'.
atom
یک اتم اگر با حروف کوچک شروع نشه یا شامل کاراکترهایی غیراز حروف الفبا، زیرخط یا @ باشه باید درون یک جفت تککوتیشن قراربگیرد. دستور ۵ همچنین نشون میده که یک اتم با تککوتیشن دقیقا با همون اتم بدون تککوتیشن یکیه.
خیلی نوشابه نخورین
اتمها یک راه خیلی عالی برای ارسال پیام یا نشون دادن ثابتها هست. با این حال چند اشتباه هم ممکنه در استفاده از اتم ها پیش بیاد: یک اتم ارجاع به یک مورد در جدول اتم (atom table) داره که حافظه مصرف میکنه(۴ بایت در سیستم های ۳۲ بیتی و ۸ بایت در سیستم های ۶۴ بیتی). جدول اتم زباله روبی نمیشه (garbage collected) و بنابراین اتمها زیاد میشن تا اینکه سیستم پر بشه یا برای استفاده از حافظه یا برای اینکه 1048577 اتم تعریف شده.این به این معنی است که اتمها نباید به صورت پویا ایجاد بشن: اگه سیستم شما قراره ضریب اطمینان بالایی داشته باشه و ورودی کاربر این اجازه رو میده که کسی سیستم رو با ایجاد اتم از کار بندازه شما یک مشکل حاد دارین. اتمها باید به عنوان ابزاری برای توسعهدهنده دیده بشه؛ باور کنین اتم ها برای همین درست شدن!
توجه توجه: بعضی اتمها کلمه کلیدی هستند و نباید استفاده بشن مگر برای چیزی که طراح زبان خواسته: نام تابعها، عملگرها، دستورات و غیره. کلمههای کلیدی اینها هستند: after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor
در پست بعدی به جبر بولی و عملگرهای مقایسهای خواهیم پرداخت.
شب خوش
مطلبی دیگر از این انتشارات
زبان برنامه نویسی ارلنگ - متغیرها
مطلبی دیگر از این انتشارات
زبان برنامه نویسی ارلنگ - مقدمه
مطلبی دیگر از این انتشارات
زبان برنامه نویسی ارلنگ - تاپل (Tuple) یا چندتایی