我有 5 行錯誤
無法在初始化程式中訪問實體成員“generateId”。嘗試用不同的運算式替換對實體成員的參考
我應該怎么做才能將函式結果寫入實體變數?
import 'dart:math';
class User{
int id = generateId(10); // error i here
String firstName;
String lastName;
String eMail;
String password;
final DateTime regDate = DateTime.now();
User(this.firstName, this.lastName, this.eMail, this.password,){
id = generateId(10);
}
@override
String toString() =>'User: \n$firstName \n$lastName';
int generateId(int count){
int result;
List <int> nums = [];
for (int i = 0; i < count; i ){
nums.add((Random().nextInt(9) 1).toInt());
}
result = int.parse(nums.join());
return result;
}
}
void main() {
User newUser = User("D", "P", "[email protected]", "password");
print(newUser);
}
uj5u.com熱心網友回復:
好吧,由于您只有一個建構式并且無論如何都設定了 id,因此您基本上可以將其洗掉:
這:
int id = generateId(10); // error i here
變成:
late int id;
完畢。
如果您真的非常需要該行,您可以將 generateId 方法設為函式而不是類方法,或者您可以將其設為靜態。這也應該有效。
uj5u.com熱心網友回復:
你應該使generateId方法static。
該方法不需要訪問物件,它不使用實體方法或欄位,因此它可以而且應該被宣告static。
(它也可以顯著簡化。)
static int generateId(int count){
var result = 0;
var random = Random();
for (var i = 0; i < count; i ) {
result = result * 10 random.nextInt(9) 1;
}
return result;
}
還要考慮您是否真的需要所有數字都為非零,或者您只需要第一個數字為非零。如果是這樣,你可以這樣做:
final int id = 1000000000 Random().nextInt(9000000000);
獲得一個隨機的十位數識別符號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382761.html
標籤:镖
上一篇:我不能在回圈之外使用變數(顫振)
