实例

实例变量 属于 Ruby

7 个练习

关于 实例变量

要点:

  • 当调用类的 .new 方法来创建对象实例时,会把所有实参传给 .initialize 方法,用于初始化实例的状态。
  • 实例变量名以 @ 开头。
  • 实例变量在被显式赋值之前,默认值为 nil。
  • 实例变量默认是私有的,应该通过 getter 和 setter 来操作。
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • 以 = 结尾命名的方法会被 Ruby 识别为 setter,并且允许使用赋值语法这种“语法糖”,例如 Backpack.new("Sven").owner = "Ayah"。 注意,owner 和 = 之间有一个空格,而实际的方法名是 owner=。
  • 可以使用 attr_reader、attr_writer 和 attr_accessor 方法来创建 getter 和 setter:
    • attr_reader:为列出的符号创建 getter
    • attr_writer:为列出的符号创建 setter
    • attr_accessor:为列出的符号创建 getter 和 setter
class Backpack
  attr_accessor :owner

  initialize(owner)
    @owner = owner
  end
end
  • 为什么要使用 getter 和 setter,而不是直接使用实例变量?
    • 如果上一个示例中出现了书写错误(我们称之为“typo”,例如 @ownar),它会静默失败,可能给系统引入 bug。
    • getter 和 setter 会让这种错误变得明确,并在出现拼写错误时抛出错误。

参考资料

初始化对象实例

实例变量

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 实例变量

练习已锁定

再解锁 5 个练习即可练习 实例变量