عملگرها در روبی

عملگرهای حسابی، مقایسه‌ای، منطقی، بیتی و عملگر فضایی (spaceship) در روبی

عملگر چیست؟

عملگرها (Operators) نمادهایی هستند که عملیاتی روی مقادیر انجام می‌دهند. روبی انواع مختلفی از عملگرها دارد.

۱. عملگرهای حسابی

عملگرناممثالنتیجه
+جمع5 + 38
-تفریق5 - 32
*ضرب5 * 315
/تقسیم7 / 23
%باقی‌مانده7 % 21
**توان2 ** 38

عملگرهای انتساب حسابی

عملگرمعادلمثال
+=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 == 5true
!=نامساوی5 != 3true
>بزرگ‌تر5 > 3true
<کوچک‌تر5 < 3false
>=بزرگ‌تر مساوی5 >= 5true
<=کوچک‌تر مساوی5 <= 3false
<=>فضایی (spaceship)5 <=> 31
.eql?مساوی دقیق5.eql?(5.0)false
.equal?یک شی؟——

عملگر فضایی (Spaceship Operator)

عملگر <=> یکی از ویژگی‌های منحصربه‌فرد روبی است:

عبارتنتیجهمعنی
5 <=> 31چپ بزرگ‌تر است
3 <=> 5-1راست بزرگ‌تر است
5 <=> 50مساوی هستند
عملگر فضایی برای مرتب‌سازی (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] (بدون ۵)

ترتیب اولویت عملگرها

  1. ! (نقیض)
  2. ** (توان)
  3. - (منفی یک‌طرفه)
  4. * / % (ضرب، تقسیم، باقی‌مانده)
  5. + - (جمع، تفریق)
  6. < > <= >= (مقایسه)
  7. <=> == != (مساوی)
  8. && (و)
  9. || (یا)
  10. .. ... (محدوده)
  11. ? : (سه‌تایی)
  12. = += -= ... (انتساب)
  13. not
  14. and or

خلاصه

دستهعملگرها
حسابی+ - * / % **
مقایسه‌ای== != > < >= <= <=>
منطقی&& || ! and or not
بیتی& | ^ ~ << >>
سه‌تایی? :
خاص||= &. .. ...

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط