اصلاح‌کننده‌های دسترسی در روبی

public، private و protected برای کنترل دسترسی متدها در روبی

سطوح دسترسی

روبی سه سطح دسترسی برای متدها دارد:

سطحتوضیح
publicهمه‌جا قابل دسترسی
privateفقط داخل همان کلاس (با self ضمنی)
protectedداخل کلاس و کلاس‌های فرزند

public (پیش‌فرض)

class User
  def greet
    "سلام!"
  end
end

puts User.new.greet  # => سلام!

private

class User
  def initialize(name)
    @name = name
  end

  def display
    "نام: #{format_name}"  # فراخوانی متد خصوصی
  end

  private

  def format_name
    @name.upcase
  end
end

u = User.new("ali")
puts u.display       # => نام: ALI
# puts u.format_name  # => ❌ خطا! private است

protected

class Account
  def initialize(balance)
    @balance = balance
  end

  def compare(other)
    if balance > other.balance
      "بیشتر"
    else
      "کمتر یا مساوی"
    end
  end

  protected

  attr_reader :balance
end

a1 = Account.new(500)
a2 = Account.new(300)
puts a1.compare(a2)  # => بیشتر

خلاصه

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

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