Dart 1.12 の時点で、このタイプの状況では null 対応の演算子を使用できます。
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)
したがって、null
if outgoing[a]
isに評価されるか、 if it is notnull
のブール結果に評価されます。contains(b)
つまり、結果のステートメントは次のいずれかになります。
bool outConn = null ?? false; // false
bool outConn = false ?? false; // false
bool outConn = true ?? false; // true
inConn
同じことがboolean にも当てはまります。つまり、inConn
との両方outConn
が null でないことが保証されているため、||
この 2 つを ing した結果を返すことができます。