以下代码出现错误Error: Cannot invoke a non-'const' constructor where a const expression is expected.
:
class TestConst {
final num x;
final num y;
TestConst(this.x, this.y);
}
void main() {
TestConst myconst1 = const TestConst(1,2);
TestConst myconst2 = const TestConst(1,2);
print(identical(myconst1, myconst2));
}
而以下内容没有,奇怪的是,当
identical(myconst1, myconst2)
确实只有const构造函数时,false
返回TestConst
吗? :class TestConst {
final num x;
final num y;
const TestConst(this.x, this.y);
}
void main() {
TestConst myconst1 = TestConst(1,2);
TestConst myconst2 = TestConst(1,2);
print(identical(myconst1, myconst2));
}
最佳答案
构造函数上的const
意味着构造函数可以创建const
对象(如果调用站点选择加入,并且所有构造参数也都是const
),而不是仅创建const
对象。
Language Tour does mention this(但不是很详细):
...