چگونه می توان اظهارات شرطی را در کد LUA ساده کرد؟

هنگام نوشتن اسکریپت ها در LUA ، توسعه دهندگان اغلب به دنبال راه هایی برای ساده سازی کد خود برای تمیز و کارآمد آن هستند. این تلاش برای کوتاه بودن به ویژه در مورد اظهارات مشروط اعمال می شود ، جایی که عبارات معمولی می توانند طولانی شوند. در این مقاله نحوه ساده سازی شرایط در LUA ، به ویژه با تمرکز بر مثال ارائه شده: بررسی چندین متغیر با یک شرایط واحد و ساده ، بررسی خواهد شد.
درک اظهارات مشروط در لوا
اظهارات مشروط در برنامه نویسی اساسی است و به ما امکان می دهد جریان اجرای را بر اساس شرایط خاص کنترل کنیم. در لوا ، if
بیانیه به طور گسترده ای استفاده می شود. روش استاندارد برای بررسی شرایط متعدد استفاده از اپراتورهای منطقی مانند and
با or
وت not
بشر در اینجا رویکرد متعارف وجود دارد:
if y >= 1 and x >= 1 and z >= 1 then
-- do stuff idk
end
این بررسی می کند اگر هر سه متغیر باشد ، y
با x
وت z
، بیشتر از یا برابر با 1 هستند. در حالی که این روش مشخص است ، با افزایش تعداد شرایط می تواند به سرعت دست و پا گیر شود.
آیا می توانیم این کد را ساده کنیم؟
بیایید سوال شما را در مورد ساده کردن شرایط به شکل جمع و جور تر در نظر بگیریم. LUA به روشهای مختلفی اجازه می دهد تا به کد پاک تر و کمتری دست یابند. با این حال ، با استفاده از فرم مختصر خود if (y and x and z) >= 1 then
همانطور که در نظر گرفته شده رفتار نخواهد کرد زیرا ارزیابی منطقی y and x and z
نتیجه مشابهی را که هر متغیر را به صورت جداگانه بررسی می کند ، به دست نمی آورد. هنگام استفاده and
، LUA در صورت صحت همه ، اولین مقدار کاذب یا آخرین مقدار را برمی گرداند و منجر به سوء تفاهم در بررسی مقادیر می شود.
راه حل های جایگزین برای ساده سازی شرایط
برای ساده کردن بررسی های مشروط خود به طور مؤثر ، استفاده از یک عملکرد یا ساختار جدول را در نظر بگیرید. در زیر برخی از روشهای ساختاری برای دستیابی به هدف شما آورده شده است:
روش 1: ایجاد یک عملکرد یاور
برای ساده تر کردن چک های خود می توانید یک عملکرد یاور ایجاد کنید:
function allGreaterThanEqualTo(value, ...)
for _, v in ipairs({...}) do
if v < value then
return false
end
end
return true
end
-- Usage
if allGreaterThanEqualTo(1, y, x, z) then
-- do stuff, but cooler
end
این عملکرد ، allGreaterThanEqualTo
، بررسی می کند که آیا همه آرگومان های ارائه شده بیشتر از یا برابر با یک مقدار مشخص هستند. این روش باعث می شود شرایط شما واضح تر و انعطاف پذیر تر شود.
روش 2: استفاده از جدول برای شرایط
روش هوشمندانه دیگر استفاده از یک جدول برای گروه بندی شرایط خود است:
local variables = {y, x, z}
local function checkAll(cond, value)
for _, v in ipairs(cond) do
if v < value then
return false
end
end
return true
end
-- Usage
if checkAll(variables, 1) then
-- do stuff, but cooler
end
در این مثال ، شما یک جدول ایجاد می کنید ، variables
، که شامل شرایط شما است. در checkAll
عملکرد خود را بر روی آنها تکرار کنید و بیان اصلی شرطی خود را مرتب تر کنید.
پایان
در حالی که فشرده سازی شرایط شما در LUA می تواند وسوسه انگیز باشد ، کد واضح و قابل نگهداری اغلب با ارزش تر از کمبود است. با استفاده از توابع یا جداول ، همانطور که در بالا نشان داده شده است ، می توانید ضمن حفظ عملکرد مورد نیاز ، کد خود را تمیز نگه دارید. ساده کردن اظهارات مشروط شما هم فواید زیبایی شناسی و هم به دست آوردن کارایی بالقوه به عنوان مقیاس پروژه شما ارائه می دهد.
سوالات متداول
س: آیا فدا کردن شفافیت برای مختصر بودن اشکالی ندارد؟
پاسخ: ایجاد تعادل بین وضوح و مختصر بودن ضروری است. خوانایی اغلب مهمتر از به حداقل رساندن خطوط کد است.
س: آیا می توانم با استفاده از اپراتورهای منطقی ، همه متغیرها را به طور مستقیم مقایسه کنم؟
پاسخ: بله ، اما منطق و ارزشهای بازگشت Lua را به خاطر بسپارید and
وت or
، زیرا ممکن است منجر به نتایج غیر منتظره شود.
س: آیا ترفندهای دیگری برای ساده سازی کد LUA وجود دارد؟
پاسخ: بله ، ایجاد توابع قابل استفاده مجدد ، استفاده از جداول و نگه داشتن کد مدولار می تواند به طور قابل توجهی به کاهش پیچیدگی در اسکریپت های LUA کمک کند.