gpt4 book ai didi

dart - Dart 空检查习惯用法或最佳实践是什么?

转载 作者:行者123 更新时间:2023-12-02 03:57:54 25 4
gpt4 key购买 nike

我有以下形式的赋值和空检查,以避免在我的 map 中进行重复查找。
在 Dart 中是否有更好或更惯用的方法来做到这一点?

bool isConnected(a, b){
List list;
return (
((list = outgoing[a]) != null && list.contains(b)) ||
((list = incoming[a]) != null && list.contains(b))
);
}

最佳答案

从 Dart 1.12 开始,空感知运算符可用于此类情况:

bool isConnected(a, b) {
bool outConn = outgoing[a]?.contains(b) ?? false;
bool inConn = incoming[a]?.contains(b) ?? false;
return outConn || inConn;
}

如果左侧为 null,则 ?. 运算符短路为 null,如果左侧不为空,则 ?? 运算符返回左侧null,否则为右侧。

声明

outgoing[a]?.contains(b)
如果 outgoing[a]null

将计算为 null,或者 contains(b) 的 bool 结果 如果不是。

这意味着生成的语句将是以下之一:

bool outConn = null ?? false; // false
bool outConn = false ?? false; // false
bool outConn = true ?? false; // true

这同样适用于 inConn bool 值,这意味着 inConnoutConn 都保证为非空,允许我们返回||两者的结果。

关于dart - Dart 空检查习惯用法或最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com