直接读取实例变量

Direct reading of an instance variable

出于某种原因,此代码将起作用:

class Foo
  @foo = "foo"
end

Foo.new.@foo # => "foo"

而且我看到,此功能已在标准库规范中使用,但似乎未记录在案。那么,问题是,该功能的状态如何,是否应该使用它?

此功能当前用于内部用途,但讨论用于限制外部对实例变量的访问。类似于 protected 方法的行为可能会有用。

此问题是 crystal-lang/crystal#6066

我通常会避免使用此功能,因为它没有记录并且很可能在某些时候被更改。