普通の書き方:
dartString name = userName;
if (name == null) {
name = 'ゲスト';
}
Dartのスマートな書き方:
dartString name = userName ?? 'ゲスト';
たった1行! 読み方は「userName が null だったら『ゲスト』を使う」です。
もっと便利な使い方:
dart// ユーザー名 → ニックネーム → メールアドレス → 「名無し」の順で使う
String displayName = user.name ?? user.nickname ?? user.email ?? '名無し';
複数の ?? を繋げられます!
目次
仲間の ?. 演算子
通に書くとこうなる:もし user が null だったら、エラーにならずに null を返す
String? email;
if (user != null) {
email = user.email;
}
Dartのスマートな書き方:
String? email = user?.email;
?? と ?. を使うと、null チェックがスッキリ! 明日からコードがカッコいい✨
?. 演算子、これは「安全に中身を取り出す」魔法
例え:財布の中の小銭を数えたい
int coins = wallet.coins; // 財布の中の小銭を取る
でも、もし財布を持ってなかったら? → エラー!
安全なやり方 (?. を使う):
int? coins = wallet?.coins; // 財布があれば小銭を取る、なければnull
財布がなくても大丈夫! エラーにならず、「coins は null」になります。
もっと実用的な例
// ユーザーがログインしているかわからない状況
User? currentUser = getCurrentUser(); // null かもしれない
// 普通に書くと…
String? email;
if (currentUser != null) {
email = currentUser.email; // ← 3行必要
} else {
email = null;
}
// ?. を使うと…
String? email = currentUser?.email; // ← 1行で済む!
この ? は「null かもしれない」という意味
- String → 必ず文字列がある
- String? → 文字列 または null
さらに連鎖できる!
会社 → 部署 → マネージャー → 名前 を安全に取得したい!!
String? managerName = company?.department?.manager?.name;
どこかが null でも大丈夫!
company が null → managerName は null
department が null → managerName は null
manager が null → managerName は null
一言で言うと: ?. は「もし null だったら、エラーにせず null を返してね」というありがたい記号です
