2021/2/15 Dart:null aware演算子について

 

広告

 
ChatGPTの回答のシェア機能を利用して、ChatGPTの回答の質を評価する投稿アプリをPlay storeにリリースしました。

ReactとFlutterに関する回答を対象としております。

今後いろいろなジャンルを追加していきます🔥

投稿の閲覧はアカウント登録無しで可能、投稿・フォロー・ブックマークなどはアカウント登録後ご利用いただけます。

現在全機能無料でご利用いただけます。

Google Play で手に入れよう


Dartではnullである可能性がある変数を扱う時に便利な演算子が用意されています。

一つ目は??=演算子です。

変数の現在の値がnullの時に代入を行います。変数の現在の値がnullでない時は代入が行われません。

int a; // <-- 初期化していないのでaの値はnull。
a ??= 3;
print(a); // <-- Prints 3.

a ??= 5; // <-- aの値は3。つまりaの値はnullではない。なので5は代入されない。
print(a); // <-- Still prints 3.

 

もう一つのnull-aware演算子は??です。

??演算子は、??演算子の左側の式の値がnullでない場合、左側の式の値を返します。

??演算子の左側の式の値がnullの場合、??演算子の右側の式の値を返します。

print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.

↑1行目は??演算子の左側が1です。つまりnullではありません。ですので??演算子の左側の1が返されます。

2行目は??演算子の左側の式の値がnullです。ですので??演算子の右側の

参考

https://dart.dev/codelabs/dart-cheatsheet#null-aware-operators


nullの可能性があるオブジェクトのプロパティまたはメソッドへのアクセスを保護するには?、ドット(.)の前に疑問符()を付けます。

myObject?.someProperty

上記のコードは次と同じ意味です。

(myObject != null) ? myObject.someProperty : null

↑三項演算子。

myObjectの値がnullでない場合myObject.somePropertyを返す。

myObjectの値がnullの場合、nullを返す。ということ。

?.演算子を連鎖させて以下のように書くこともできます。

myObject?.someProperty?.someMethod()

↑myObjectがnullの場合、myObject?.someProperty?.someMethod()はnullを返します。

class MyObject{
  int myProperty;
  
  MyObject({this.myProperty});
}

void main(){
  var myObject=null;
  print("${myObject?.myProperty?.toString()}"); //←null
  
  MyObject myObject1=MyObject();
  MyObject myObject2=MyObject(myProperty:3);
  print("${myObject1?.myProperty?.toString()}"); //←null
  print("${myObject2?.myProperty?.toString()}"); //←3
}

 

 

 

 

参考

https://dart.dev/codelabs/dart-cheatsheet#conditional-property-access

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です