代码之家  ›  专栏  ›  技术社区  ›  karafar

无定义,专用功能

  •  1
  • karafar  · 技术社区  · 7 年前

    我是DART新手,不熟悉这个概念。请耐心等待。

    我在读一些代码, here 当我遇到这个的时候。(第14行)

    static final none = Motility._(0);
    

    查看下半部分的赋值,我可以看到一个接受整数的私有函数,但是经过一些搜索,我在类中看不到定义。

    所以,我的问题是,这个神秘的功能是什么?我假设这是语言的一个特征,但是我很难找到它,因为我从来没有听说过这个概念!

    1 回复  |  直到 7 年前
        1
  •  3
  •   Günter Zöchbauer    7 年前

    它调用构造函数

    Motility._(this._bitMask);
    

    https://github.com/munificent/hauberk/blob/master/lib/src/engine/stage/tile.dart#L28

    从那以后就不那么明显了 new 变为可选的,但拥有私有构造函数是一种常见的模式。(标识符以开头 _ 在达特是私人的)

    Motility 基本上是以这种方式构建的枚举,而不是

    enum Motility { none, door, fly, swim, walk, doorAndFly, doorAndWalk, flyAndWalk }
    

    因为这样可以分配自定义值。