2021/2/15 Learn (null-safety) with Snippets! 1〜7の訳

Snippet 1: Introducing non-nullable types

DartPadのヌルセーフティバージョンへようこそ!
これは、nullの安全性のための新しい構文とコーディングパターンを説明するために設計された一連のコード例の最初のものです。
各スニペットは、不良または壊れた状態で始まります。
Dartアナライザーからの警告が表示され、コードがコンパイルされない可能性があります。
しかし、指示に従い、コードを編集することで、
各スニペットを動作状態に更新できます。
その過程で、nullの安全性について学びます!

この最初の例は、基本的なものです。
以下の変数 `a`は` int`として宣言されています。
Dartプロジェクトでnullセーフティが有効になっている場合、デフォルトではすべての型がnon-nullable型です。
割り当ての値を3または145に変更してみてください。
null以外のもの!

void main() {
  int a;
  a = 24;
  print('a is $a.'); //24
}


Snippet 2:Nullable types

null値を保持できる変数が必要な場合はどうなりますか?
タイプの最後に疑問符を追加することで、null許容(null可型、nullable型)として宣言できます。
この場合、 `int?`を試してください。

void 

2020/9/19 Dart: Sound null safetyの訳

Sound null safety

Dart言語にnull安全が導入されます。(現在ベータ版です(2021年2月時点))

null安全を導入した場合、デフォルトでは普通に型宣言したら、それはnon-nullable型になります。つまり普通に宣言した変数は、nullを持つことができない。普通に宣言した変数の値がnullということはない。

null安全を導入することで、null-dereference errorが実行時に発生することがなくなり、代わりにコード編集時の静的解析エラーとなります。

次のスクリーンショットに示すように、通常の開発環境でnullセーフティを試すか、既存のコードを移行してnullセーフティを使用するか、WebアプリDartPad with NullSafetyでヌルセーフティの使用を練習できます。

Screenshot of DartPad null safety snippet with analysis errors

important

null安全はまだテクニカルプレビューなので、製品版で使用しないでください。特にFlutterフレームワークはまだnull安全に対応していません。(2020年9月19日時点)(2021年2月時点で削除されている。)


Null safety principles

Dart null安全サポートは、次の3つのコア設計原則に基づいています。

Non-nullable by default.明示的にnull値をとることができると示さない限り、non-nullable型とみなされます。このデフォルトは、APIでnull以外が断然最も一般的な選択であることが調査で判明した後に選択されました。

Incrementally adoptable. 何をnull safetyにマイグレートするか、そしていつマイグレートするかを選択できます。同じプロジェクトでnull-safeなコードとnon-null-safeなコードを混在させることができます。徐々にマイグレートしていくことが可能です。マイグレーションを助けるツールを提供しています。

Fully sound. Dartのnullセーフティは健全であり、コンパイラの最適化を可能にします。型システムがnullではないと判断した場合、値がnullになることはありません。プロジェクト全体とその依存関係をnullセーフティに移行すると、健全性のメリットを最大限に活用できます。バグが少なくなるだけでなく、バイナリが小さくなり、実行が高速になります。


A tour of