Dart 达斯:什么<;类型>;在函数名之后

Dart 达斯:什么<;类型>;在函数名之后,dart,Dart,为什么这个代码有效?即使函数要求int,也无法理解为什么此代码工作正常 void main(){ String imprimir = "abc"; imprime(imprimir); } void imprime<int>(int aa){ //works, but stops working if we remove <int> as it should print(aa); } void main(){

为什么这个代码有效?即使函数要求
int
,也无法理解为什么此代码工作正常

void main(){      
  String imprimir = "abc";  

  imprime(imprimir);

}

void imprime<int>(int aa){   //works, but stops working if we remove <int> as it should
  print(aa);  
}
void main(){
字符串imprimir=“abc”;
imprime(imprimir);
}
void-imprime(int-aa){//可以工作,但是如果我们按照应该的方式删除它,它就会停止工作
印刷品(aa);
}

函数名后面的
是什么意思?

请参阅。您已经创建了一个泛型函数。它的type参数几乎可以命名为任何名称,它重用名称
int
,并隐藏实际的
int
整数类型。如果删除
,该函数将不再是泛型函数,将需要实际的
int
参数。好的,谢谢。所以它基本上只是在
intaa
中禁用
int
?。这是否意味着我不应该在本例中定义参数的类型,它是否无用?正如您的代码当前所示,当您调用泛型类型时,泛型类型(碰巧命名为
int
)被推断为
String
。在您的情况下,
imprime
不需要是泛型的,可以是
void imprime(字符串aa)
。如果你想传递不同的参数类型,那么你应该给泛型类型一个更好的名字(例如,
void-imprime(taa)
),我想我知道了。所以这个模式对于泛型类型很有用。基本上,当我在参数中需要泛型类型时,我必须在函数名之后声明它,以便创建泛型函数。