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;
}
?.
왼쪽가 널, 널 및 경우에 운전자 쇼트 ??
가 널이 아니며, 우측 그렇지 경우 작업자가 좌측을 반환한다.
진술
outgoing[a]?.contains(b)
따라서 null
if outgoing[a]
is로 평가 null
되거나 그렇지 않으면 부울 결과로 평가됩니다 contains(b)
.
즉, 결과 문은 다음 중 하나가됩니다.
bool outConn = null ?? false;
bool outConn = false ?? false;
bool outConn = true ?? false;
inConn
부울 에도 동일하게 적용됩니다. 즉, inConn
및 둘 다 outConn
null이 아닌 것이 보장되므로 둘 다 결과를 반환 할 수 있습니다 ||
.
outgoing[a]?.contains(b)
경우 때문에, 적어도 그루비 의미로, 위험outgoing
하다null
,에 전체 표현식의 평가됩니다null
. 따라서 실제로return (null || true)
체크 모드에서 던질.