由于某种原因,此代码将起作用:
class Foo
@foo = "foo"
end
Foo.new.@foo # => "foo"
我明白了,此功能已在标准库规范中使用,但它似乎没有记录在案。所以,问题是,该功能的状态是什么,应该使用它吗?
此功能目前用于内部目的,但讨论它是为了限制对实例变量的外部访问。类似于protected
方法的行为可能很有用。
这个问题是 crystal-lang/crystal#6066。
我通常会避免使用此功能,因为它没有文档,并且很可能在某些时候被更改。