Dartlang语法用mixin扩展一个类?

mar*_*vic 6 dart

有人可以解释这个dart语法吗?这是在某处记录的吗?

abstract class FixedLengthListBase<E> =
    ListBase<E> with FixedLengthListMixin<E>;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ioP 5

这是用于声明命名的mixin应用程序的语法。在“ Dart中的Mixins”一文中对此进行了介绍。

它们由类声明的一种特殊形式定义,该类声明一个名称,并声明它们等于通过with子句给一个超类应用mixin。

(几乎)与写作相同

abstract class FixedLengthListBase<E> extends
    ListBase<E> with FixedLengthListMixin<E>{}
Run Code Online (Sandbox Code Playgroud)

技术上的区别在于,在这种情况下,FixedLengthListBase它本身不是mixin应用程序,而是隐式,未命名mixin应用程序的抽象子类。ListBase<E> with FixedLengthListMixin<E>


mez*_*oni 3

这是一种声明形式mixin application class

classDefinition:
  metadata abstract? class mixinApplicationClass

mixinApplicationClass:
  identifier typeParameters? '='  mixinApplication ';'
Run Code Online (Sandbox Code Playgroud)

mixin 应用程序可用于扩展类;

或者,可以将类定义为 mixin 应用程序,如本节中所述。

mixinApplicationClass:
  identifier typeParameters? '='  mixinApplication ';'
Run Code Online (Sandbox Code Playgroud)
classDefinition:
  metadata abstract? class mixinApplicationClass

mixinApplicationClass:
  identifier typeParameters? '='  mixinApplication ';'
Run Code Online (Sandbox Code Playgroud)

https://www.dartlang.org/docs/spec/latest/dart-language-specification.html#h.trk07h8vrppk