Sound null safety 사용 방법
어느 버전부터 시작합니까?
Dart 2.12
null safety란?
예전처럼 타자를 치면 자동으로 non nullable가 됩니다.유형:?쓰면 nullable가 됩니다.
예제)
int a; //non nullable
int? b://nullable
null의 사용에 어떤 변화가 있습니까?
지금까지 null은 null형으로 모든 유형의 파생형이었지만 null safety는 null형으로 변해 단순히 null형(Object형의 파생형도 아님)을 독립시켰다.지금까지의 공이형은 네버형(모든 유형&널의 파생형)이었다.
int?어떤 정의입니까?
int?int|Null의 공용입니다.이렇게 하면null에 대입할 수 있습니다.
int와 int?의 변환은?
nonnullable에서nulllable까지는 OK입니다.거꾸로 안 돼.
int nonnullable = 1;
int? nullable;
//nonnullable = nullable;//これはダメ
nullable = nonnullable;//これはOK
int?인트로 바꿀 수 없나요?
변수 이름!전환 가능합니다.단, null이 아닌 일은 프로그래머가 보증해야 합니다. (null이 실행될 때 오류가 발생했습니다.)
int nonnullable = 1;
int? nullable;
nonnullable = nullable!;//nullableは実際にnullなので実行するとエラー
int?검사는 어떻게 해야 합니까?
null을 검사하지 않고nulllable 변수를 건드리면 문법 오류가 발생합니다.null 키를 누르면 터치할 수 있습니다.
int? nullable;
//nullable.abs(); //nullチェック入れてないのでエラー
if문으로 검사하고 있어서요.방문시 OK if(nullable != null){
print('nullable = ' + nullable.abs().toString());
}else{
print('nullable is null');
}
if문 검사에서 답장이 왔어요.방문시 OK if(nullable==null)return;
nullable.abs();
null-aware operators 검사 통과 //?.でチェック
nullable?.abs();
//??でチェック
print('nullable = ' + (nullable ?? 1).abs().toString());
Never 검사를 사용합니다.반환 이상
void throwException(){
throw Exception('Exception');
}
의 함수가 있는 경우 if(nullable==null)throwException();
nullable.abs();//エラー
는nullllable입니다.abs () 가 실행되었을 때null은 아니지만 문법 해석을 할 때 오류가 발생할 수 있음을 판단할 수 없습니다.만약 이 함수로 처리가 끝나거나 예외로 정지된다면, 문법 해석에서 Never는 오류가 아니라void로 되돌아오는 값으로 판단할 수 있습니다.Never throwException(){
throw Exception('Exception');
}
if(nullable==null)throwException();
nullable.abs();//OK
레벨 속성은if문의null 검사에 적용되지 않습니다
class A{
int? val;
}
void main() {
A a = A();
if(a.val != null){
print('a.val.abs()=' + a.val.abs()); //nullチェックしているのにダメ
}
}
이 경우 로컬 변수를 일시적으로 대입하여 로컬 변수를null 검사한 후 사용 int? nonnullable = a.val;
if(nonnullable != null){
print('a.val.abs()=' + nonnullable.abs().toString());
}
참조:Sound null safety
Understanding null safety
Reference
이 문제에 관하여(Sound null safety 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/purigen/articles/2b3277f28d3311텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)