عملگرها در روبی
عملگرهای حسابی، مقایسهای، منطقی، بیتی و عملگر فضایی (spaceship) در روبی
عملگر چیست؟
عملگرها (Operators) نمادهایی هستند که عملیاتی روی مقادیر انجام میدهند. روبی انواع مختلفی از عملگرها دارد.
۱. عملگرهای حسابی
| عملگر | نام | مثال | نتیجه |
|---|---|---|---|
+ | جمع | 5 + 3 | 8 |
- | تفریق | 5 - 3 | 2 |
* | ضرب | 5 * 3 | 15 |
/ | تقسیم | 7 / 2 | 3 |
% | باقیمانده | 7 % 2 | 1 |
** | توان | 2 ** 3 | 8 |
عملگرهای انتساب حسابی
| عملگر | معادل | مثال |
|---|---|---|
+= | x = x + | x += 5 |
-= | x = x - | x -= 5 |
*= | x = x * | x *= 5 |
/= | x = x / | x /= 5 |
%= | x = x % | x %= 5 |
**= | x = x ** | x **= 2 |
x = 10
x += 5 # x = 15
x -= 3 # x = 12
x *= 2 # x = 24
puts x # => 24
۲. عملگرهای مقایسهای
| عملگر | نام | مثال | نتیجه |
|---|---|---|---|
== | مساوی | 5 == 5 | true |
!= | نامساوی | 5 != 3 | true |
> | بزرگتر | 5 > 3 | true |
< | کوچکتر | 5 < 3 | false |
>= | بزرگتر مساوی | 5 >= 5 | true |
<= | کوچکتر مساوی | 5 <= 3 | false |
<=> | فضایی (spaceship) | 5 <=> 3 | 1 |
.eql? | مساوی دقیق | 5.eql?(5.0) | false |
.equal? | یک شی؟ | — | — |
عملگر فضایی (Spaceship Operator)
عملگر <=> یکی از ویژگیهای منحصربهفرد روبی است:
| عبارت | نتیجه | معنی |
|---|---|---|
5 <=> 3 | 1 | چپ بزرگتر است |
3 <=> 5 | -1 | راست بزرگتر است |
5 <=> 5 | 0 | مساوی هستند |
عملگر فضایی برای مرتبسازی (sort) استفاده میشود.
۳. عملگرهای منطقی
| عملگر | نام | توضیح |
|---|---|---|
and / && | و | هر دو درست |
or / || | یا | حداقل یکی درست |
not / ! | نقیض | برعکس |
age = 25
has_license = true
# AND
puts age >= 18 && has_license # => true
# OR
puts age < 18 || has_license # => true
# NOT
puts !has_license # => false
تفاوت && و and
&& و || اولویت بالاتری نسبت به and و or دارند:
# && اولویت بالاتر دارد
puts true && false || true # => true (&& اول، سپس ||)
# and اولویت کمتر دارد
puts true and false or true # => (true and false) or true
در عمل، از
&& و || استفاده کنید چون رفتارشان قابلپیشبینیتر است.۴. عملگرهای بیتی
| عملگر | نام | مثال |
|---|---|---|
& | AND بیتی | 5 & 3 → 1 |
| | OR بیتی | 5 | 3 → 7 |
^ | XOR بیتی | 5 ^ 3 → 6 |
~ | NOT بیتی | ~5 → -6 |
<< | شیفت چپ | 1 << 3 → 8 |
>> | شیفت راست | 8 >> 2 → 2 |
۵. عملگر سهتایی (Ternary)
یک شرط کوتاه در یک خط:
age = 20
status = age >= 18 ? "بزرگسال" : "کودک"
puts status # => بزرگسال
۶. عملگرهای خاص روبی
||= (انتساب شرطی)
اگر متغیر nil یا false باشد، مقدار میگیرد:
name = nil
name ||= "ناشناس"
puts name # => ناشناس
name ||= "علی"
puts name # => ناشناس (تغییر نکرد چون nil نبود)
&. (Safe Navigation)
اگر شی nil باشد، خطا نمیدهد:
user = nil
puts user&.name # => nil (خطا نمیدهد!)
# puts user.name # => ❌ خطا!
.. و ... (Range)
puts (1..5).to_a.inspect # => [1, 2, 3, 4, 5] (شامل ۵)
puts (1...5).to_a.inspect # => [1, 2, 3, 4] (بدون ۵)
ترتیب اولویت عملگرها
!(نقیض)**(توان)-(منفی یکطرفه)* / %(ضرب، تقسیم، باقیمانده)+ -(جمع، تفریق)< > <= >=(مقایسه)<=> == !=(مساوی)&&(و)||(یا).. ...(محدوده)? :(سهتایی)= += -= ...(انتساب)notand or
خلاصه
| دسته | عملگرها |
|---|---|
| حسابی | + - * / % ** |
| مقایسهای | == != > < >= <= <=> |
| منطقی | && || ! and or not |
| بیتی | & | ^ ~ << >> |
| سهتایی | ? : |
| خاص | ||= &. .. ... |
این مبحث بخشی از دوره آموزش کامل روبی است.