class CalculatorBrain {
final int height;
final int weight;
double _bmi;
CalculatorBrain({required this.height, required this.weight});
String calculateBMI() {
double _bmi = weight / pow(height / 100, 2);
return _bmi.toStringAsFixed(2);
}
String getResult() {
if (_bmi >= 25) {
return "OverWeight";
} else if (_bmi > 18.5 && _bmi < 25) {
return "Normal";
} else {
return "UnderWeight";
}
}
}
我嘗試添加 late 關鍵字并使用了 double ?_bmi 但它們都不起作用。
uj5u.com熱心網友回復:
這有效:
class CalculatorBrain {
final int height;
final int weight;
late double _bmi;
CalculatorBrain({required this.height, required this.weight});
String calculateBMI() {
_bmi = weight / ((height / 100) * (height / 100));
return _bmi.toStringAsFixed(2);
}
String getResult() {
if (_bmi >= 25) {
return "OverWeight";
} else if (_bmi > 18.5 && _bmi <25) {
return "Normal";
}
else {
return "UnderWeight";
}
}
}
void main() {
final brain = CalculatorBrain(height: 180, weight: 80);
brain.calculateBMI();
print(brain.getResult());
}
然而,這是可怕的類設計。我會假設這是一項學校練習,而您并沒有將其發展為專業人士。
一個稍微好一點的類設計,它不依賴于late變數來隱藏這樣一個事實,即只有當程式員知道必須呼叫函式的魔術順序時,類才起作用:
class BodyMassIndex {
final int height;
final int weight;
final double value;
BodyMassIndex({required this.height, required this.weight})
: value = (weight / ((height / 100) * (height / 100)));
String get meaning {
if (value >= 25) {
return "OverWeight";
} else if (value > 18.5 && value <25) {
return "Normal";
}
else {
return "UnderWeight";
}
}
}
void main() {
final bmi = BodyMassIndex(height: 180, weight: 80);
print("value: ${bmi.value}");
print("meaning: ${bmi.meaning}");
}
作為準則,空安全性取決于您毫不含糊地告訴編譯器它們應該做什么。如果您的編譯器無法理解您,這可能意味著您沒有很好地解釋它,也就是“編程”。因此,如果您遇到空安全問題,實際上并不是空安全,而是您的程式邏輯以及您撰寫它的方式。
uj5u.com熱心網友回復:
從以下函式中洗掉雙關鍵字:
String calculateBMI() {
double _bmi = weight / pow(height / 100, 2);
...
并將您的類屬性更改double _bmi為late double _bmi
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420864.html
標籤:
