Dart 分析仪isn';t正在Visual Studio代码中工作。。。还是这样?
在Visual Studio代码中,当调用Dart函数时省略@required参数时,似乎不会出现错误。我必须做些什么才能让分析仪工作吗?或者错误被标记,而我只是看不到它们?任何帮助都将不胜感激Dart 分析仪isn';t正在Visual Studio代码中工作。。。还是这样?,dart,visual-studio-code,dart-analyzer,Dart,Visual Studio Code,Dart Analyzer,在Visual Studio代码中,当调用Dart函数时省略@required参数时,似乎不会出现错误。我必须做些什么才能让分析仪工作吗?或者错误被标记,而我只是看不到它们?任何帮助都将不胜感激 import 'package:meta/meta.dart'; void sayHello({@required String to, bool inEnglish}){ if(inEnglish == null || inEnglish){ print("Hello, $to");
import 'package:meta/meta.dart';
void sayHello({@required String to, bool inEnglish}){
if(inEnglish == null || inEnglish){
print("Hello, $to");
} else {
print("Bonjour, $to");
}
}
main(){
sayHello(inEnglish: true); // output: Hello, null, no complaints about **to** missing
}
Dart语言具有必需的位置参数、可选的位置参数和可选的命名参数。遗憾的是,Dart不支持所需的命名参数
@required
注释实际上没有任何作用。这只是由颤振添加的一种变通方法,当您没有传递标记有颤振的参数时,分析器可以使用颤振添加警告。但它不会阻止您省略“required”参数,这样做的代码仍然可以很好地编译和运行。Dart语言具有必需的位置参数、可选的位置参数和可选的命名参数。遗憾的是,Dart不支持所需的命名参数
@required
注释实际上没有任何作用。这只是由颤振添加的一种变通方法,当您没有传递标记有颤振的参数时,分析器可以使用颤振添加警告。但这并不能阻止您省略“required”参数,这样做的代码仍然可以很好地编译和运行。值得注意的是,在不久的将来,当Dart移动到默认类型系统中不可为null时,通过使参数的类型不可为Null,可以获得所需的命名参数。@BenKonyi不一定。它可能只需要一个默认值。在这一点上,它在技术上仍然是必需的,但已经提供了一个默认值,因此它将无法在一开始就将其标记为必需的。但是,如果您将某项标记为必需并提供默认值,我不确定分析器当前将如何运行。@BenKonyi根据该逻辑,所有参数都是必需的,因为即使是可选参数也隐式地指定了默认值null
。带有显式默认值的可选参数仍然是可选的。非Null类型的可选参数可能只需要显式的默认值。无论如何,现在判断不可为null的类型在可选参数中的行为还为时过早。Dart可能只是为了一个非null的隐式默认值,特别是对于内置值类型,从它的屁股里掏出了一些东西。我现在正在移植一些SDK代码,看起来如果你有一个不可为null的命名参数而没有默认值,分析器实际上会抱怨。例如:error•参数“details”因其类型而不能具有“null”值,因此它必须是必需的参数或具有默认值。•sdk_nnbd/lib/vmservice/vmservice.dart:95:58•在这一点上,命名参数实际上是必需的。值得注意的是,在不久的将来,当dart移动到默认类型的非空系统时,通过使参数的类型不可为Null,可以获得所需的命名参数。@BenKonyi不一定。它可能只需要一个默认值。在这一点上,它在技术上仍然是必需的,但已经提供了一个默认值,因此它将无法在一开始就将其标记为必需的。但是,如果您将某项标记为必需并提供默认值,我不确定分析器当前将如何运行。@BenKonyi根据该逻辑,所有参数都是必需的,因为即使是可选参数也隐式地指定了默认值null
。带有显式默认值的可选参数仍然是可选的。非Null类型的可选参数可能只需要显式的默认值。无论如何,现在判断不可为null的类型在可选参数中的行为还为时过早。Dart可能只是为了一个非null的隐式默认值,特别是对于内置值类型,从它的屁股里掏出了一些东西。我现在正在移植一些SDK代码,看起来如果你有一个不可为null的命名参数而没有默认值,分析器实际上会抱怨。例如:error•参数“details”因其类型而不能具有“null”值,因此它必须是必需的参数或具有默认值。•sdk\u nnbd/lib/vmservice/vmservice.dart:95:58•缺少\u参数的\u默认值\u
此时,命名参数实际上是必需的。