📌

【Flutter】is,as,とかって何なんですか

2022/10/29に公開

Type test operators:「型テスト演算子」について

  • 実行時の型のチェックに便利

as

  • オブジェクト指向で言うところの「型のキャスト」。
    Person型を含んだオブジェクトである「employee」を「アップキャスト」している感じ。
    employeeがPerson型であるのが確実な時だけ、アップキャストasを使っていい
    employeeオブジェクトはPerson型を親に持つとする。すると
(employee as Person).firstName = 'Bob';

公式引用

is

  • オブジェクトが指定された型を持っている場合は trueを返す。
    オブジェクトの型がわからない、確定していない場合isで型の確認を行う
if (employee is Person) {
  // Type check
  employee.firstName = 'Bob';
}

公式引用

上記の as is は同等のコードではない。もし

(employee as Person).firstName = 'Bob';

のコードでemployeenull or Person型でない場合例外をスローする。

if (employee is Person) {
  // Type check
  employee.firstName = 'Bob';
}

こっちだと例外は起きずにすむ。

is!

  • オブジェクトが指定された型を持っていない場合に trueを返す。isとやることは同じ。

次はキーワードをまとめる回でもしよかな知らないの多いし

GitHubで編集を提案

Discussion