VIP برنامه نویسی Client Side

وضعیت
موضوع بسته شده است.

☾♔TALAYEH_A♔☽

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2017/05/18
ارسالی ها
35,488
امتیاز واکنش
104,218
امتیاز
1,376
سیستم تایپ
لوا پویندگی تایپ دارد، یعنی نوع متغیرها در لوا در زمان همگردانی مشخص نمی‌شود، بلکه هر متغیر در زمان اجرا نوعش تعیین می‌شود. در واقع در تعریف متغیر، نوع متغیر توسط برنامه‌نویس نوشته نمی‌شود. زمانی که برنامه‌نویس یک عمل مقداردهی به آن متغیر انجام می‌دهد، نوع متغیر بسته به چیزی که در متغیر ذخیره می‌شود تعیین می‌شود. نوع متغیرها می‌تواند در طول اجرا تغییر کند.
 
  • پیشنهادات
  • ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    نوع داده‌های اولیه
    در لوا ۸ نوع داده اولیه وجود دارد:

    • نوع صحت (Boolean): مقدار true یا false می‌تواند بگیرد.
    • عدد: عددی اعشاری با دقت دوگانی (double precision)
    • رشته: رشته‌ای از کاراکترهای یک بایتی. از تمام کاراکترهای ۰ تا ۲۵۵ می‌توان در رشته استفاده کرد.
    • تابع: با هر تابع هم مثل یک متغیر برخورد می‌شود. برای آن متغیر عملگر)(تعریف شده‌است.
    • جدول: جدول ساختارداده‌ای شبیه آرایه است، اما می‌توان از هر تایپی (عدد، رشته، ...) برای اندیس‌گذاری در آن استفاده کرد.
    • ریسه: ساختار داده مربوط به همروندسازی اجرا
    • کاربرداده (userdata): برای پیوند میان لوا و C باید اشاره‌گرها را بتوان در لوا استفاده کرد. کاربرداده همین کار را می‌کند.
    • Nil: یک نوع خاص که فقط یک مقدار هم دارد که آن مقدار با nil مشخص می‌شود
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    جدول‌ها
    داده‌ساختار اولیه لوا، جدول است. جدول ساختارداده‌ای شبیه آرایه است، اما می‌توان از هر تایپی (عدد، رشته، ...) برای اندیس‌گذاری در آن استفاده کرد. مثلاً در کد زیر:

    t = {}
    t["mohsen"] = 1
    t["ali"]=2
    x = t["mohsen"] + t["ali"]
    print(x) -- prints 3
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    با جای اندیس‌های عددی از اندیس "mohsen" و "ali" استفاده شده‌است. قبل از اینکه بتوان از عملگر [] استفاده کرد باید متغیر مربوطه را مقدار دهی اولیه به مقداری جدولی کرد. ساده‌ترین مقداردهی اولیه مقدار به {} دادن است. می‌توان از عبارات زیر هم استفاده کرد:

    t = {mohsen = 1, ali = 2}
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    در کد بالا t مانند مثال قبلی مقداردهی می‌شود.

    داده‌ساختار جدول (از دید برنامه‌نویس) شبیه جدولی است که دو ستون دارد: در ستون اول تعدادی صفت مشخص شده‌است (مثلاً رنگ، اندازه، ...). در ستون دوم جلوی هر سطر مقدار متناظر آن صفت آمده‌است. مثلاً روبروی سطر رنگ آمده‌است آبی. برنامه‌نویس می‌تواند یک سطر به جدول اضافه کند، یک سطر را حذف کند یا مقدار ستون دوم یک سطر را تغییر دهد. همهٔ این اعمال با این نحو انجام می‌شود:

    t[x] = a
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    که در آن t یک جدول است و x نام ستون است. اگر x مقداری بوده که قبلاً هم در جدول بوده (در ستون اول)، آنگاه مقدار روبروی آن x می‌شود. در حالت خاصی که a برابر nil باشد آن ستون حذف می‌شود. اگر x قبلاً در جدول نبوده آنگاه یک سطر جدید اضافه می‌شود که در ستون اول آن x و در ستون دوم a آمده‌است. پس یک جدول یک رشته را به یک مقدار متناظر می‌کند.

    از جدول برای پیاده‌سازی مفاهیم مختلفی استفاده می‌شود: آرایه، شی و فضای نام

    جدول به عنوان آرایه
    در مثال زیر:

    colors1 = {"blue", "green"}
    colors2[1] = "blue"
    colors2[2] = "green"
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    مقداردهی colors1 از نوع جدیدی است که با مقداردهی colors2 معادل است. به این ترتیب یک جدول که اندیس‌هایش اعداد صحیح ۱ تا n هستند می‌تواند بیانگر مفهوم یک آرایه یاشد.

    جدول به عنوان داده ساختار شی
    هر شی را می‌توان با یک جدول نمایش داد. مثلاً اگر می‌خواهیم اتاقی را توصیف کنیم، می‌توان از کد زیر استفاده کرد:

    room = {color="blue",x=10,y=20}

    در این مثال صفت‌هایی که برای توصیف به کار رفته‌اند، عبارتند از طول و عرض اتاق (x و y) و رنگ (color).

    لوا از تایپ‌دهی اردکی استفاده می‌کند. کلاس‌ها در لوا تعریف نمی‌شوند، فقط نمونه‌ها از اشیا تعریف می‌شوند. در تعریف هرنمونه باید تمامی صفات را معین کرد. وفتی روی هر نمونه‌ای عملیات انجام می‌شود، درجا امکان انجام عملیات بررسی می‌شود. اگر این امکان نباشد خطای زمان اجرا پیش می‌آید (البته می‌توان با فراجدول‌ها بعضی از این خطاها را مهار کرد) پس در صورتی که نمونه‌ای خصوصیات کافی داشته باشد، از نظر مفهومی به عنوان یک نمونه از یک کلاس خاص محسوب می‌شود.

    برای سادگی لوا یک نحو ویژه برای این‌گونه استفاده از جدول ایجاد کرده‌است. با نوشتن room.x در مثال بالا به مقدار x دست می‌یابیم، دقیقاً مانند اینکه نوشته باشیم room["x"]. این نمایش مفهوم شیء را می‌رساند و به کسانی که با نحو object.attribute عادت دارند هم کمک می‌کنند.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    سازوکار تولید مثل
    برای ساده‌سازی فرایند نمونه‌سازی لوا از سازوکار تولید مثل استفاده می‌کند. در این سازکار، یک نمونه ساخته می‌شود و سپس از تابعی کمکی استفاده می‌شود تا مانند آن نمونه به تعداد کافی ساخته شود. این تابع به صورت زیر قابل پیاده‌سازی است.

    function clone(o)
    local new_o = {}
    local i,v = next(o,nil)
    while i do
    new_o = v
    i, v = next(o, i)
    end
    return new_o
    end
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    در این مثال از ابزارهای انعطاف پذبر استفاده شده‌است.

    جدول به عنوان نام فضای نام
    با استفاده از یک جدول می‌توان توابع مرتبط را در یک فضا نگهداری کرد:

    Point = {}
    Point.new = function (x, y)
    return {x = x, y = y}
    end

    Point.set_x = function (point, x)
    point.x = x
    end
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    ابزارهای انعطاف‌پذیر
    در لوا می‌توان روی عناصر یک جدول حرکت کرد. برای این منظور از تابع next استفاده می‌شود. این تابع یک متغیر می‌گیرد و اولین عضو بعد از آن در جدول را برمی‌گرداند (توجه کنید که اعضا در جدول با ترتیبی تعریف نشده نگهداری می‌شوند). next(nil) اولین عضو جدول را برمی‌گرداند. این قابلیت به لوا امکانات زیادی می‌دهد از جمله تولید مثل اشیا یا ذخیره‌سازی و بازیابی تمام متغیرهای عمومی.
     
    وضعیت
    موضوع بسته شده است.

    برخی موضوعات مشابه

    بالا