Dart类内直接赋值成员属性报错,求正确实现方案
在Dart中正确初始化类嵌套属性的方法
你遇到的问题核心是:Dart类的顶层作用域仅允许定义成员(属性、方法),不能直接编写执行语句,myCat.name = 'dexter';属于执行代码,无法直接放在类的顶层,这是和Swift的规则差异点。
以下是几种正确的实现方式:
方式1:在构造函数体内完成赋值
class Animals { Cat myCat = Cat(); // 构造函数内部可执行赋值逻辑 Animals() { myCat.name = 'dexter'; } } class Cat { String? name; }
方式2:使用初始化列表+级联操作初始化
class Animals { // 声明属性时直接通过级联操作初始化name Cat myCat = Cat()..name = 'dexter'; } class Cat { String? name; }
方式3:复刻Swift的实例化后赋值逻辑
如果你想完全沿用Swift的写法,Dart同样支持在类外部实例化对象后修改属性:
void main() { var myPet = Animals(); myPet.myCat.name = 'dexter'; print(myPet.myCat.name); // 输出: dexter } class Animals { Cat myCat = Cat(); } class Cat { String? name; }
内容的提问来源于stack exchange,提问作者Meta
相关产品推荐
相关产品推荐

