Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart函数参数可以';即使是同一类型,也不能指定_Dart - Fatal编程技术网

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”);
}