由于某些原因,以下代码可正常工作:
class Foo
@foo = "foo"
end
Foo.new.@foo # => "foo"
我发现这个功能已经被用于标准库规范中,但似乎没有文档记录。所以问题是,这个功能的状态是什么,是否应该使用它?
class Foo
@foo = "foo"
end
Foo.new.@foo # => "foo"
我发现这个功能已经被用于标准库规范中,但似乎没有文档记录。所以问题是,这个功能的状态是什么,是否应该使用它?
目前,此功能仅用于内部目的,但正在讨论限制对实例变量的外部访问。类似于protected
方法的行为可能很有用。
这个问题可以在crystal-lang/crystal#6066上找到。
一般情况下,我会避免使用此功能,因为它未经记录,而且很可能在某些时候被更改。
Foo.new.foo
吗? - SalmonKillerFoo.new.foo
,您需要定义它。例如使用类似getter: foo
的东西。这看起来更像是一个问题,我建议报告它。通常,如果您想保持代码兼容性,不应使用未记录的功能。它可能在标准库中一段时间,直到某些东西被修复并且已发布的库将依赖于适当的机制。 - ony