为什么我收到此错误警告:空感知操作的操作数'??'具有 'String' 类型,不包括 null。飞镖语言
Why im getting this error Warning: Operand of null-aware operation '??' has type 'String' which excludes null. Dart Language
所以我在学习 Dart 语言中的 SWITCH 和 CASE 语句,在他解释代码的课程中,但是当我得到一个时他没有得到错误。
我得到的错误
: 警告:空感知操作的操作数 '??'具有类型 'String',不包括 null。
字符串``用户名=名字?? “访客用户”;
我的密码是
void learnCondExpr() {
String name = 'Yamix';
String userName = name ?? "Guest User";
print(userName);
}
我能得到一些帮助吗:)
所以??
操作必须放在可空变量之后。
但是在您的代码中 name
变量是 String
,不可为空。
所以 ?? "Guest User"
总是被忽略。
警告说的是 - 此代码无用。
P.S。
如果您将代码修复为 String? name = 'Yamix';
,警告将消失。
问题是 name
是 not-nullable 字符串。
您可以通过添加 ?
.
将其声明为 nullable
类型
像这样:
String? name = 'Yamix';
请记住,即使您的字符串可以为 null 但您为其分配了一个值,它也将保持不变,这就是为什么您在检查 null
时可能会收到警告的原因:
The left operand can't be null, so the right operand is never executed.
Try removing the operator and the right operand
默认情况下,Dart 会假定您声明的任何变量永远不会为空。您将无法将 null
分配给变量,并且在运行时它会抛出错误。如果您尝试像对待 non-nullable 变量那样 可能 为 null,它也会抱怨,这就是您对 '??' 所做的。
您可以在变量类型后使用 ?
来告诉 Dart 您的变量将接受空值。 ??
允许我们处理 null 值而无需编写额外的代码行
简而言之,x = y ?? z
可以描述为
如果左操作数 (y) 为null
,则分配右操作数 (z) 即。
void example(String? myString) {
String? y = myString;
String z = 'spam';
var x = y ?? z;
print(x);
}
void main() {
example('hello!');
example(null);
}
// Output:
// hello!
// spam
注意我添加了'?'在第 2 行 'String' 之后,让 Dart 知道 'y' 可能为空。这可以防止我稍后在尝试使用 null-aware 运算符 (??) 将其分配给 'x'.
的代码中出现错误
我希望这不仅能解决您的问题,还能为您提供一些背景知识! :)
所以我在学习 Dart 语言中的 SWITCH 和 CASE 语句,在他解释代码的课程中,但是当我得到一个时他没有得到错误。
我得到的错误 : 警告:空感知操作的操作数 '??'具有类型 'String',不包括 null。 字符串``用户名=名字?? “访客用户”;
我的密码是
void learnCondExpr() {
String name = 'Yamix';
String userName = name ?? "Guest User";
print(userName);
}
我能得到一些帮助吗:)
所以??
操作必须放在可空变量之后。
但是在您的代码中 name
变量是 String
,不可为空。
所以 ?? "Guest User"
总是被忽略。
警告说的是 - 此代码无用。
P.S。
如果您将代码修复为 String? name = 'Yamix';
,警告将消失。
问题是 name
是 not-nullable 字符串。
您可以通过添加 ?
.
nullable
类型
像这样:
String? name = 'Yamix';
请记住,即使您的字符串可以为 null 但您为其分配了一个值,它也将保持不变,这就是为什么您在检查 null
时可能会收到警告的原因:
The left operand can't be null, so the right operand is never executed. Try removing the operator and the right operand
默认情况下,Dart 会假定您声明的任何变量永远不会为空。您将无法将 null
分配给变量,并且在运行时它会抛出错误。如果您尝试像对待 non-nullable 变量那样 可能 为 null,它也会抱怨,这就是您对 '??' 所做的。
您可以在变量类型后使用 ?
来告诉 Dart 您的变量将接受空值。 ??
允许我们处理 null 值而无需编写额外的代码行
简而言之,x = y ?? z
可以描述为
如果左操作数 (y) 为null
,则分配右操作数 (z) 即。
void example(String? myString) {
String? y = myString;
String z = 'spam';
var x = y ?? z;
print(x);
}
void main() {
example('hello!');
example(null);
}
// Output:
// hello!
// spam
注意我添加了'?'在第 2 行 'String' 之后,让 Dart 知道 'y' 可能为空。这可以防止我稍后在尝试使用 null-aware 运算符 (??) 将其分配给 'x'.
的代码中出现错误我希望这不仅能解决您的问题,还能为您提供一些背景知识! :)