📜  红宝石 |访问控制(1)

📅  最后修改于: 2023-12-03 15:41:13.766000             🧑  作者: Mango

红宝石 | 访问控制

简介

在软件开发中,访问控制是一项非常重要的安全功能。它用于控制谁可以访问某些数据或功能,以及他们可以采取的操作。红宝石是一种流行的编程语言,它也提供了一些实用的机制来实现访问控制。

类和模块访问控制

在红宝石中,访问控制的第一层是类和模块级别的。您可以使用以下访问修饰符控制类和模块的可见性:

  • public:公共类和模块,可以从任何地方访问。
  • protected:受保护的类和模块,只有在其定义的类和子类中才能访问。
  • private:私有类和模块,只能在其定义的类中访问。

以下是一个示例:

# public class
class PublicClass
end

# protected class
class ProtectedClass
  protected
  def test
    puts "Hello from a protected method!"
  end
end

# private class
class PrivateClass
  private
  def test
    puts "Hello from a private method!"
  end
end
实例变量访问控制

除了类和模块访问控制之外,红宝石还提供了实例变量访问控制。您可以使用以下访问修饰符控制实例变量的可见性:

  • attr_reader:读取器,允许从外部读取该实例变量的值。
  • attr_writer:写入器,允许从外部写入该实例变量的值。
  • attr_accessor:读写器,允许从外部读取和写入该实例变量的值。

以下是一个示例:

class MyClass
  attr_reader :name
  attr_writer :age
  attr_accessor :gender
  
  def initialize(name, age, gender)
    @name = name
    @age = age
    @gender = gender
  end
end

bob = MyClass.new("Bob", 30, "Male")
puts bob.name #=> "Bob"

bob.age = 40
bob.gender = "Female"

puts bob.age #=> NoMethodError
puts bob.gender #=> "Female"
总结

访问控制是软件开发中的一个关键方面。红宝石提供了一些实用的机制实现此功能。您可以使用类和模块访问控制来控制类和模块的可见性,也可以使用实例变量的访问修饰符来控制实例变量的可见性。