这一节主要介绍泛型,泛型通俗的讲就是解决类的接口, 方法, 复用性, 以及对不特定数据类型的支持(类型校验),再通俗一点,就是对于类型的约束.在Dart中,使用泛型的作用: 1 简化相同的逻辑 2 限制可使用的类型, 简单看一下栗子:
使用星号* 打印实心直角三角形
void printTrangle() {
for(var i = 0;i<5;i++) {
int j =0;
var str = "";
for(j = 0;j<2*i+1;j++) {
str += "*";
}
print("$str");
}
}
如果要换成加号,减号 那就得多写几个函数,如果用以下方式就不用:
class printTriangle<T> {
void printUserChar (T char) {
for(var i=0;i<5 ;i++) {
int j =0;
var str = "";
for(j = 0;j<2*i+1;j++) {
str += char as String;
}
print("$str");
}
}
}
分析: 我们用T取代String来充当类型占位符。
限制泛型类型范围
class printTriangle<T extends String> {
void printUserChar (T char) {
for(var i=0;i<5 ;i++) {
int j =0;
var str = "";
for(j = 0;j<2*i+1;j++) {
str += char as String;
}
print("$str");
}
}
}
分析:如果在调用它的位置传入了非String类型的变量,就会出现编译错误而无法运行,杜绝类在运行时异常的发生。