??操作符做什么?

时间:2019-12-27 15:14:07

标签: flutter dart

在使用Flutter时,我正在浏览代码。我看到了我不理解的运算符??

SharedPreferences prefs;
prefs = await SharedPreferences.getInstance();
id = prefs.getString('id') ?? '';
nickname = prefs.getString('nickname') ?? '';
aboutMe = prefs.getString('aboutMe') ?? '';
photoUrl = prefs.getString('photoUrl') ?? '';

5 个答案:

答案 0 :(得分:1)

??运算符是“如果为空”的缩写 它检查该值是否为空,并相应执行替代代码。 如您的代码

id = prefs.getString('nickname') ?? '';

它检查共享首选项中的昵称是否为空。如果为null,则为id分配一个空字符串,否则将保持原始值。

要获得有关Dart运算符的进一步帮助,请转到dart语言导览并通过在浏览器中键入CTRL + F来搜索所需的运算符。您一定会找到它。

此运算符在dart中称为Null合并运算符。谢谢@CrazyLazyCat

阅读有关此链接的详细信息的链接为here

希望有帮助。

答案 1 :(得分:1)

通常至少在C#上它被称为null运算符。

您可以在此link

上找到很多信息

有关该链接的详细信息

  

空值运算符??如果不为空,则返回其左操作数的值

答案 2 :(得分:1)

?? Dart

空感知运算符之一

result = leftSideValue ?? rightSideValue

它检查左侧值是否为空。如果左侧值为null,则将默认值(右侧)分配给结果。

示例1

var data1;
var data2 = data1 ?? "Default value";
print(data2); // Default value

示例2

var data1 = "Some Value";
var data2 = data1 ?? "Default value";
print(data2); // Some value

您可以在Dart DocsMedium

中了解更多信息

答案 3 :(得分:0)

语法:

<Expression>??<Value if expression is null>;

??的示例

int a; int b = a ?? 0;

这将'0'的值分配给'b',因为'a'为空。可以重写为

int a;
int b;
if(a==null){
  b=0;
}else{
  b=a;
}

答案 4 :(得分:0)

如果使用??时,左侧表达式的值为 null ,则右侧表达式将返回

>
final number = null ?? 6; // number will be assigned 6

int a;

int b = a ?? 5 ?? 3; // b will be assigned 5 because a is null

这称为空合并运算符,您可以find out more about it here。 Dart中还有其他可识别空值的运算符,您可以learn more about here


您可以随意链接此运算符多次,因为我一开始提到的规则一直都适用:

int a = null ?? null ?? null ?? 42; // a will be assigned 42

int b = null ?? () { return 4; }() ?? 2; // b will be assigned 4