繁体   English   中英

如何在Dart构造函数中设置final / const属性

[英]How to set final/const properties in Dart constructor

我有一个具有不可变属性的类,int id。 如何将id的值传递给构造函数?

class Hey
{
  var val;
  final int id;
  Hey(int id,var val)
  {
    this.id=id;
    this.val=val;
  }
}

void main()
{
  Hey hey=new Hey(0,1);
}

hey.dart:10:10:错误:未找到Setter:'id'。 this.id = ID; ^^ hey.dart:10:10:错误:没有为类'嘿'定义setter'id'。 - '嘿'来自'hey.dart'。 尝试将名称更正为现有setter的名称,或者定义名为“id”的setter或字段。 this.id = ID; ^^

我认为const或final字段属性不需要setter。 API尚不清楚如何处理这个问题。

Dart语言之旅

注意:实例变量可以是final但不是const 最终实例变量必须在构造函数体启动之前初始化 - 在变量声明,构造函数参数或构造函数的初始化列表中

初始化列表中的部分说:

除了调用超类构造函数之外,还可以在构造函数体运行之前初始化实例变量。 用逗号分隔初始化程序。

 // Initializer list sets instance variables before // the constructor body runs. Point.fromJson(Map<String, num> json) : x = json['x'], y = json['y'] { print('In Point.fromJson(): ($x, $y)'); } 

所以一般的方法是通过初始化列表。

如上所述,您还可以在变量声明处初始化:

class Foo {
  final x = 42;
}

或者可以通过构造函数参数初始化它们:

class Foo {
  final x;

  Foo(this.x);
}

虽然那些其他方法可能并不总是适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM