无痕类属性

jjm*_*elo 4 syntax object raku

尽管实际上你可以详细列举任何类型的数据结构,以适应它变成一个标量,sigilless变量可能有一定的内在价值,因为它们实际上不成形,用作类的属性。但是,似乎没有办法这样做,has \.a也不起作用has .\a。A has $!a可能涵盖了我们使用无符号变量可以实现的大部分功能,但是是否存在将它们用作属性的实际方法?

Jon*_*ton 9

当前没有办法拥有无印记属性。据我所知,目前还没有积极考虑将其包含在将来的Raku版本中。要提出的最明显的设计考虑因素是:

  1. 的语义my \foo = ...是单个静态分配。很明显,这在词汇范围内的符号上意味着什么。还不清楚在类声明中这意味着什么,以及它如何与实例化工作流交互。例如,:$!fooBUILD/中没有等效的签名语法TWEAK
  2. 使用twigil意味着它遵循着一种印记。取决于上下文,没有它们的分支可能是歧义的。此外,.仅出于声明我们希望无sigil属性获取访问器的目的而允许这种情况是很奇怪的。
  3. 这将违反规则,即您总是可以通过查找!twigil 来找到对实例状态的访问权限,这很可惜。