我有一个应该接受两种不同数据类型作为输入的函数:
vec3 add(vec3 vec){
this.x += vec.x;
this.y += vec.y;
this.z += vec.z;
return this;
}
vec3 add(num scalar){
this.x += scalar;
this.y += scalar;
this.z += scalar;
return this;
}
但这会返回错误:
名称'add'已定义
有没有办法在Dart中完成这项工作? 我知道类型是可选的,但我想知道是否有办法。
答案 0 :(得分:1)
Dart不允许函数/方法重载。您可以为方法使用不同的名称,也可以使用可选或命名的可选参数,以便能够使用具有不同参数集的方法。
答案 1 :(得分:1)
不像C ++或Java,在Dart中你不能做方法重载。但您可以使用命名的可选参数,如下面的文字:
vec3 add({num scalar, vec3 vec}) {
if (vec3 != null) {
this.x += vec.x;
this.y += vec.y;
this.z += vec.z;
} else if (scalar != null) {
this.x += scalar;
this.y += scalar;
this.z += scalar;
}
return this;
}
答案 2 :(得分:1)
class TypeA {
int a = 0;
}
class TypeB {
int b = 1;
}
class TypeC {
int c = 2;
}
func(var multiType) {
if (multiType is TypeA) {
var v = multiType;
print(v.a);
} else if (multiType is TypeB) {
var v = multiType;
print(v.b);
} else if (multiType is TypeC) {
var v = multiType;
print(v.c);
}
}
void main() {
//Send Any Type (TypeA, TypeB, TypeC)
func(TypeC());
}