[英]How to use this in a dart constructor with private variables
當我嘗試在 dart 中創建構造函數時,例如Student(this._name)
它不適用於私有變量。
我已經嘗試過使用 setter,但它也不起作用。
class Student{
var _id;
var _name;
Student(this.id, this.name);
void set id(int id) => _id = id;
void set name(String name) => _name = name;
}
不支持此功能,因為
它會將私有實現暴露給外部。
如果您要重命名
var _id;
var _userId;
您將通過重命名私有字段來破壞使用您的類的代碼。
請改為在我的答案下方查看評論。
class Student{
var _id;
var _name;
Student({this._id, this._name}); // error
void set id(int id) => _id = id;
void set name(String name) => _name = name;
}
另類
class Student{
var _id;
var _name;
Student({int id, String name}) : _id = id, _name = name;
void set id(int id) => _id = id;
void set name(String name) => _name = name;
}
如果 class 是 inheritance,你們中的一些人可能會遇到困難,您只需要在初始化私有后添加逗號 (,)。
例子
class Animal {
String _name;
int _age;
}
class Dog extends Animal {
String _race;
Dog(String name, int age, {String? race}) : _race = race ?? "Wild", super(name, age);
}
希望這段代碼能幫到你。
你可以使用這個符號
class Student {
String _id;
String _name;
Student({required String id, required String name})
: _id = id,
_name = name;
}
此表示法無效,因為該變量不是private
並且其元素同樣可以再次訪問。
DartLang 說:避免在 getter 和 setter 中包裝字段只是為了“安全” 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.