Dart函数参数可以';即使是同一类型,也不能指定
我有以下代码:Dart函数参数可以';即使是同一类型,也不能指定,dart,Dart,我有以下代码: void baz(字符串s){ } 无效条(T val,无效函数(T)编码){ } void foo(){ ((val)=>bar(val,baz)(“foo”); } 但是,它给出了以下错误: 无法将参数类型“void Function(String)”分配给参数类型“void Function(String)”。dart(参数类型不可分配) 至少可以说是一个令人困惑的错误!这是怎么回事?省道类型参数有点奇怪,因为您可以使用保留关键字和类型作为这些参数的名称。在本例中,(va
void baz(字符串s){
}
无效条(T val,无效函数(T)编码){
}
void foo(){
((val)=>bar(val,baz)(“foo”);
}
但是,它给出了以下错误:
无法将参数类型“void Function(String)”分配给参数类型“void Function(String)”。dart(参数类型不可分配)
至少可以说是一个令人困惑的错误!这是怎么回事?省道类型参数有点奇怪,因为您可以使用保留关键字和类型作为这些参数的名称。在本例中,
(val)=>…
实际上在闭包上下文中使用String
作为类型参数的名称,与dart:core
中的类String
冲突。如果在foo
中将type参数放在闭包中,则此代码应该可以工作,bar
中的val
类型仍然是String
。如果要确定,可以在闭包中显式键入val
参数:
void foo(){
((字符串val)=>bar(val,baz))(“foo”);
}
此外,由于类型推断将能够推断类型T
为String
,因此可以省略bar
的类型参数:
void foo(){
((字符串val)=>bar(val,baz))(“foo”);
}