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)
したがって、nullif 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 した結果を返すことができます。