当前位置: 首页 > 知识库问答 >
问题:

dart:类构造函数被标记为const的含义是什么

景宏盛
2023-03-14

所以我看到的代码是这样的:

class Whatever {
  final String name;
  const Whatever(this.name);
}

构造函数用const标记这一事实会改变什么?它有任何效果吗?

我读过这篇文章:

对要成为编译时常量的变量使用const。如果const变量在类级别,请将其标记为静态const。(实例变量不能是const。)

但它似乎对类构造函数没有意义。

共有1个答案

慕凌龙
2023-03-14
    < li >构造函数不能有构造函数体。 < li >所有成员都必须是final,并且必须在声明时或通过构造函数参数或初始值设定项列表进行初始化。 < li >您可以使用仅允许常量(批注、可选参数的默认值,...) < li >您可以创建常量字段,如< code > static const someName = const Whatever();

如果类没有常量构造函数,则不能使用它初始化常量字段。我认为在构造函数中指定这一点是有意义的。您仍然可以在运行时使用<code>new Whatever()

请参见

    < li>Dartlang常量构造函数-它与“常规”构造函数有何不同 < li>Dart工厂构造函数-它与“const”构造函数有何不同 < li >如何创建作为常数值返回的工厂构造函数 < li >为什么Dart有编译时间常数? < li >如何编写抽象类构造函数,以便在子类中灵活扩展

“旧风格”(仍然有效)枚举是如何使用常量https://stackoverflow.com/a/15854550/217408的一个很好的例子

 类似资料:
  • 问题内容: 我正在尝试使用来在我的Android应用中设置位置更新,但出现以下错误: LocationRequest构造函数被标记为内部,不应从应用程序访问 我的位置更新请求如下所示: 我遵循了docs和example,它们以相同的方式进行操作。如果不应该打电话给我,那么正确的方法是什么? 问题答案: 使用静态方法。

  • 在Dart中,工厂构造函数需要编码器提供更多逻辑,但与常量构造函数没有太大区别,只是它们允许“非最终”实例变量。 与const Constructor相比,它们有哪些优点? 谢谢大家。 编辑 下面是关于Seth Ladd博客“Dart-试图理解“工厂”构造函数的价值”中工厂构造函数的用法。 恕我直言,使用通用构造函数,可以通过细微的差异实现相同的效果,但相当简单。 如上所示,尽管这两个实例 所以,

  • 本文向大家介绍dart 构造函数,包括了dart 构造函数的使用技巧和注意事项,需要的朋友参考一下 示例 类的构造函数必须与其类具有相同的名称。 让我们为Person类创建一个构造函数: 与下面的方法相比,上面的示例是一种定义构造函数的更简单,更好的方法: 现在,您可以创建一个Person实例,如下所示:            

  • 请考虑以下程序: 如果我运行该程序,我会得到(GoBolt): ...这符合我的预期。但是,如果在线上我将析构函数标记为可能抛出,那么我得到: ...即使用复制因子代替移动因子。为什么会这样呢?复制似乎不能防止移动所必须的破坏。 相关问题: < li >是否要求std::vector使用移动而不是复制? < li >当向量增长时,如何实施移动语义? < li >向量重新分配使用复制而不是移动构造函

  • 问题内容: 所以我正在学习Java。我有一个月的时间,我刚刚了解了构造函数。但是我看不到创建一个的全部目的。为什么我什么时候要使用?我知道它没有主方法,您可以从主类中调用构造函数。任何人都可以启发我这个话题,这对我有很大帮助。 问题答案: 构造函数是用来初始化/设置类实例的对象。 如果您有一个对象需要一些处理才能使用(例如,初始化成员),则应在构造函数中执行此操作。 理想情况下,您永远不应拥有“部

  • 问题内容: 这些来自github上的spring amqp示例,位于https://github.com/SpringSource/spring-amqp- samples.git 这些是 什么类型的Java构造函数?它们是吸气剂和吸气剂的捷径吗? 与此相反 问题答案: 这些构造函数被重载以使用调用另一个构造函数。第一个无参数构造函数使用空参数调用第二个。第二呼叫的第三构造(未示出),其必须采取,