다음 코드 줄에는 두 개의 물음표가 있습니다.
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
무엇을 의미 하는가?
답변:
??
이중 물음표 운영자 수단 "경우는 null". 예를 들어 다음 식을 사용하십시오.
String a = b ?? 'hello';
이것은 a
같음을 의미 b
하지만, 만약 b
null이면 a
같음 'hello'
.
또 다른 관련 연산자는 ??=
입니다. 예를 들면 :
b ??= 'hello';
즉, b
이 null이면으로 설정합니다 hello
. 그렇지 않으면 변경하지 마십시오.
참고
자귀
다트 1.12 릴리스 뉴스 집합으로 다음과 같은 언급 널 인식 운영자 :
??
-null 연산자 인 경우??=
-널 인식 할당x?.p
-널 인식 액세스x?.m()
-널 인식 메서드 호출?
삼항 연산자 : String a = b == true ? 'x' : 'y';
. if-null 연산자는 같은 삼항 null 검사의 약자로 판명되었습니다 String a = a == null ? 'hello : a;
.
?
삼항 연산자에 대한 PHP에서 같은 방법을 사용하고, 대신에 바로 가기를 원하는가되어 $a = $b === true ? $b : 'y'
당신이 입력 할 수 있습니다 $a = $b === true ?: 'y'
대신 또는 $a = $b === true ? 'x' : $b
-$a = $b === true ?? 'x'
Dart는 null 일 수있는 값을 처리하기위한 몇 가지 편리한 연산자를 제공합니다. 하나는 ?? = 할당 연산자로, 해당 변수가 현재 null 인 경우에만 변수에 값을 할당합니다.
int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.
a ??= 5;
print(a); // <-- Still prints 3.
또 다른 널 인식 연산자는 ?? , 표현식의 값이 null이 아닌 경우 왼쪽에 표현식을 반환합니다.이 경우 오른쪽에 표현식을 평가하고 반환합니다.
print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.