عملگرها در لوا
عملگرهای حسابی، مقایسهای، منطقی، الحاق، طول و اولویت عملگرها
عملگر چیست؟
عملگر (Operator) نمادی است که روی مقادیر عملیات انجام میدهد. لوا عملگرهای ساده و تمیزی دارد.
عملگرهای حسابی
| عملگر | کار | مثال |
|---|---|---|
+ | جمع | 5 + 3 → 8 |
- | تفریق | 5 - 3 → 2 |
* | ضرب | 5 * 3 → 15 |
/ | تقسیم | 5 / 2 → 2.5 |
// | تقسیم صحیح | 5 // 2 → 2 |
% | باقیمانده | 5 % 2 → 1 |
^ | توان | 2 ^ 3 → 8 |
- | منفی یکانی | -5 |
عملگرهای مقایسهای
| عملگر | معنی | مثال |
|---|---|---|
== | مساوی | 5 == 5 → true |
~= | نامساوی | 5 ~= 3 → true |
< | کوچکتر | 3 < 5 → true |
> | بزرگتر | 3 > 5 → false |
<= | کوچکتر یا مساوی | 5 <= 5 → true |
>= | بزرگتر یا مساوی | 3 >= 5 → false |
در لوا عملگر نامساوی
~= است، نه !=! این یکی از تفاوتهای مهم با C و جاوااسکریپت است.عملگرهای منطقی
سه عملگر: and، or، not
print(true and false) -- false
print(true or false) -- true
print(not true) -- false
رفتار خاص and/or در لوا (Short-circuit)
این عملگرها همیشه true/false برنمیگردانند — یکی از مقادیر را برمیگردانند:
-- and: اگر اولی نادرست بود، همان اولی؛ وگرنه دومی
print(nil and 5) -- nil
print(false and 5) -- false
print(10 and 5) -- 5
-- or: اگر اولی درست بود، همان اولی؛ وگرنه دومی
print(nil or 5) -- 5
print(false or "پیشفرض") -- پیشفرض
print(10 or 5) -- 10
ترفند مقدار پیشفرض
local function greet(name)
name = name or "مهمان" -- اگر name نادرست بود، "مهمان"
return "سلام " .. name
end
print(greet("علی")) -- سلام علی
print(greet()) -- سلام مهمان
عملگر الحاق و طول
print("سلام" .. " " .. "دنیا") -- الحاق
print(#"hello") -- 5 (طول)
print(#{10, 20, 30}) -- 3 (طول جدول)
اولویت عملگرها
از بالا (بیشترین اولویت) به پایین:
^(توان)not,#, unary-*,/,//,%+,-..(الحاق)<,>,<=,>=,~=,==andor
print(2 + 3 * 4) -- 14 (اول ضرب)
print((2 + 3) * 4) -- 20 (پرانتز اولویت را عوض میکند)
وقتی مطمئن نیستید، از پرانتز استفاده کنید!
(a or b) and c همیشه واضحتر از a or b and c است.این مبحث بخشی از دوره آموزش کامل لوا است.