[解決済み] DartのNULLチェックのイディオムやベストプラクティスは何ですか?
2022-10-30 15:47:53
質問
マップの二重検索を避けるために、以下のような代入&NULLチェックの形式をとっています。
Dartでこれを行うより良いまたはより慣用的な方法はありますか?
bool isConnected(a, b){
List list;
return (
((list = outgoing[a]) != null && list.contains(b)) ||
((list = incoming[a]) != null && list.contains(b))
);
}
どのように解決するのですか?
Dart 1.12では、このような状況に対してnull-awareオペレータが利用可能です。
bool isConnected(a, b) {
bool outConn = outgoing[a]?.contains(b) ?? false;
bool inConn = incoming[a]?.contains(b) ?? false;
return outConn || inConn;
}
は
?.
演算子は,左辺が NULL の場合は NULL に短絡し,右辺が NULL の場合は
??
演算子は左辺がNULLでなければ左辺を、そうでなければ右辺を返します。
文は
outgoing[a]?.contains(b)
は以下のように評価されます。
null
もし
outgoing[a]
は
null
のブーリアン演算の結果である。
contains(b)
でない場合は
つまり、結果の文は以下のいずれかになります。
bool outConn = null ?? false; // false
bool outConn = false ?? false; // false
bool outConn = true ?? false; // true
同じことが
inConn
ブーリアンであり、これは両方の
inConn
と
outConn
は非NULLであることが保証されており、その結果
||
の結果を返すことができます。
関連
-
[解決済み] フラッターサークルデザイン
-
[解決済み] Dartの「const」キーワードと「final」キーワードの違いは何ですか?
-
[解決済み】Dartで日付をフォーマットする方法とは?
-
[解決済み】Flutterで数値入力フィールドを作成する方法は?
-
[解決済み] "extends" 対 "implements" 対 "with" (拡張する)。
-
[解決済み] Flutter SVG レンダリング
-
[解決済み] Flutter initState メソッドでコンテキストを取得する
-
[解決済み] タイムスタンプの変換
-
[解決済み] Dart マルチプルコンストラクタ
-
[解決済み] スクロールグローを消すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フラッターサークルデザイン
-
[解決済み] FlutterのBuildキャッシュをクリアする方法は?
-
[解決済み】ダーツのダブルドット(.)の使い方をリストアップしてみる?
-
[解決済み】Flutterで数値入力フィールドを作成する方法は?
-
[解決済み] dartでenumにメソッドや値を追加する
-
[解決済み] Flutter SVG レンダリング
-
[解決済み] TextFieldのBorder Colorを変更できない。
-
[解決済み] ステートレスウィジェットクラスのKeyとは何ですか?
-
[解決済み] POSTリクエスト中にCERTIFICATE_VERIFY_FAILEDエラーが発生した場合、どのように解決しますか?
-
[解決済み] スクロールグローを消すには?