int scooterPower(List<dynamic> list) => list[0];
int scooterCapacity(List<dynamic> list) => list[1];
String scooterModel(List<dynamic> list) => list[2];
void main() {
final scooter = [50, 1000, "Suzuki"];
print(scooterModel(scooter));
}
或者,如果静态辅助函数太过时了,可以使用扩展getters:
extension ScooterProperties on List<dynamic> {
int get scooterPower => this[0];
int get scooterCapacity => this[1];
String get scooterModel => this[2];
}
void main() {
final scooter = [50, 1000, "Suzuki"];
print(scooter.scooterModel);
}
extension ScooterProperties on List<dynamic> {
int get scooterPower {
if (this case [int power, int _, String _]) return power;
throw StateError("Not a scooter list");
}
int get scooterCapacity {
if (this case [int _, int capacity, String _]) return capacity;
throw StateError("Not a scooter list");
}
String get scooterModel {
if (this case [int _, int _, String model]) return model;
throw StateError("Not a scooter list");
}
}
void main() {
final scooter = [50, 1000, "Suzuki"];
print(scooter.scooterModel);
}
再过一段时间,您也许可以使用内联类来廉价地 Package 列表。
inline class Scooter {
final List<dynamic> _list;
Scooter(List<dynamic> list) : _list = list;
if (list case [int _, int _, String _]) return;
throw ArgumentError.value(list, "list", "Not a valid scooter list");
}
int get power => _list[0];
int get capacity => _list[1];
String get model => _list[2];
}
void main() {
final scooter = Scooter([50, 1000, "Suzuki"]);
print(scooter.model);
}
1条答案
按热度按时间06odsfpq1#
使用常量。
或者使用helper函数:
或者,如果静态辅助函数太过时了,可以使用扩展getters:
在任何情况下,你都没有静态类型安全,如果你在实际上不是“有效的scooter列表”的东西上使用任何访问方法,都会得到运行时错误。
在Dart的下一个版本中,你可以使用模式,更简洁地做一些测试,比如:
再过一段时间,您也许可以使用内联类来廉价地 Package 列表。
(在此之前,您还可以使用非
inline
类来做同样的事情。