在typescript中,如何编写一个函数来处理任意维数组(例如:array<;number>;,array<;array<;number>;,…)? 在C++中,我可以编写模板函数: #include <stdio.h> #include <vector> template <typename V> void f(V& v){ for(auto& e : v){ f(e); } printf("\n"); } template <> void f(int& v){ printf("%d ",v); } 我相信我在C++中可能是错误的方法
你完全是函数模板的专门化。 总之,在java或C++中,类型化的泛型更像泛型,而不是C++中的模板。在typescript中,如何编写一个函数来处理任意维数组(例如:array<;number>;,array<;array<;number>;,…)? 在C++中,我可以编写模板函数: #include <stdio.h> #include <vector> template <typename V> void f(V& v){ for(auto& e : v){ f(e); } printf("\n"); } template <> void f(int& v){ printf("%d ",v); } 我相信我在C++中可能是错误的方法,c++,arrays,vector,typescript,typescript2.0,C++,Arrays,Vector,Typescript,Typescript2.0,你完全是函数模板的专门化。 总之,在java或C++中,类型化的泛型更像泛型,而不是C++中的模板。 不能定义完整的专门化。在C++中,您完全是函数模板的专门化。 总之,在java或C++中,类型化的泛型更像泛型,而不是C++中的模板。 您不能定义完全专门化。您只能有一个同名函数,因此需要将两个部分协调到同一个函数中。在这种情况下,对数组进行简单检查就足够了 f(v: any) { if (Array.isArray(v)) for (let e in v) this.f
不能定义完整的专门化。在C++中,您完全是函数模板的专门化。 总之,在java或C++中,类型化的泛型更像泛型,而不是C++中的模板。
您不能定义完全专门化。您只能有一个同名函数,因此需要将两个部分协调到同一个函数中。在这种情况下,对数组进行简单检查就足够了
f(v: any)
{
if (Array.isArray(v))
for (let e in v)
this.f(e);
else
doSomething(v);
}
您只能有一个同名函数,因此需要将两个部分协调到同一个函数中。在这种情况下,对数组进行简单检查就足够了
f(v: any)
{
if (Array.isArray(v))
for (let e in v)
this.f(e);
else
doSomething(v);
}
f<V>(v : V){
for(let e in v){
this.f(e);
}
}
f<>(v : number){
}
Duplicate function implementation.
f(v: any)
{
if (Array.isArray(v))
for (let e in v)
this.f(e);
else
doSomething(v);
}