Dart中类名开头的美元符号$是什么意思?

Kas*_*rop 5 dart flutter

在生成的类中可以经常观察到美元符号。类型也以$符号开头。我知道 Dart 语言允许类名包含美元符号,但也许它有一个我不知道的隐藏含义?我在 stackoverflow 上发现了类似的问题,但在 2012 年被问到,答案不再有效。

示例 1。

class Counter {
      int _counter = 0;
      int next() => ++_counter;
    }
    class Operation {
      void operate(int step) { doSomething(); }
    }


    class $OperationWithCounter = Operation with Counter;

    class Foo extends $OperationWithCounter{
      void operate([int step]) {
    super.operate(step ?? super.next());
    }
Run Code Online (Sandbox Code Playgroud)

lrn*_*lrn 9

Dart 标识符可以包含$. 它只是给语言的另一封信,但传统上它是为生成的代码保留的。这允许代码生成器(在很大程度上)避免不必担心命名冲突,只要他们将 a$放在他们创建的名称中的某个位置即可。

这种特殊情况下,该名称仅用于表示原始程序中未出现的合成名称。它是由您发现它的地方描述的脱糖“生成”的。