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

2023-12-10

我有以下形式的赋值和空检查,以避免在我的地图中进行双重查找。
在 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;
}

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

该声明

outgoing[a]?.contains(b)

因此将评估为null if outgoing[a] is null,或布尔结果contains(b)如果不是。

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

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

这同样适用于inConn布尔值,这意味着两者inConn and outConn保证为非空,允许我们返回结果||荷兰国际集团的两个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 空检查习惯用法或最佳实践是什么? 的相关文章