这是 Dart 构造函数吗? [复制]

Posted

技术标签:

【中文标题】这是 Dart 构造函数吗? [复制]【英文标题】:Is this a Dart Constructor? [duplicate] 【发布时间】:2022-01-09 23:46:00 【问题描述】:

我还在习惯 Dart 并且我已经搜索过这个问题的答案,但我还没有找到答案。类定义的第二行“ClassA._();”有什么作用?列表声明只是为了给类一个存在的理由。

class ClassA    
   ClassA._();   
   static final List<String> someList = ["A", "B", "C"]; 

如果它是一个构造函数,它将如何被调用? 在做了更多的调查之后,我看到它创建了一个单例。但是单例是什么时候创建的呢?有没有办法在实例化之前制作一些模组?

提前感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:
ClassA._();

是一个名为_ 的命名构造函数。在飞镖中,identifiers that start with underscore (_) are only visible inside the library it is contained in。

您以这种方式定义一个类的原因是您想阻止人们创建该类的实例。

【讨论】:

mmcdon20,谢谢您的回复。这就说得通了。语法很简洁。 Dart 没有像 privateprotected 这样的关键字,而是在标识符中使用前导下划线来控制可见性。与其他语言相比,它有点不寻常,因此在阅读 dart 代码时要牢记这一点。

以上是关于这是 Dart 构造函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Dart 的构造函数中初始化最终变量。两种方法,但只有一种有效? [复制]

Dart 多个构造函数

如何在 Dart 中调用超级构造函数?

我可以将复制构造函数设为私有并仍然使用默认实现吗

复制构造函数和防御性复制

Dart中的构造函数