我有一个具有不变属性的类,即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:错误:找不到设置器:“ id”。 this.id = id; ^^ hey.dart:10:10:错误:未为类别“ Hey”定义二传手'id'。 -“ Hey”来自“ hey.dart”。尝试将名称更正为现有设置器的名称,或者定义一个名为“ id”的设置器或字段。 this.id = id; ^^
我认为const或final字段属性不需要二传手。 该API尚不清楚如何处理。
答案 0 :(得分:0)
注意:实例变量可以为
final
,但不能为const
。最终实例变量必须在构造函数主体开始之前进行初始化-在变量声明中,通过构造函数参数或在构造函数的initializer list中。
初始化列表上的部分显示:
除了调用超类构造函数外,还可以在构造函数主体运行之前初始化实例变量。用逗号分隔初始化程序。
// 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);
}
尽管其他方法可能并不总是适用。