Sound null safety 사용 방법

11210 단어 FlutterDarttech

어느 버전부터 시작합니까?


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

좋은 웹페이지 즐겨찾기