我有以下形式的赋值和空检查,以避免在我的地图中进行双重查找。
在 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(使用前将#替换为@)