okuzawatsの日記

Android / Kotlin Enthusiast 🤖

Dartのidentical

identicalを用いて、参照の等価性を評価することができます。identicalはdart:coreに含まれています。

bool identical(
  Object a,
  Object b
)

以下の例では、2つの変数の参照が等しいため、identicalはtrueを返します。

Dog dog = Dog(name: 'pochi');

bool result = identical(dog, dog);
print(result); // => true

以下の例では、2つの変数の参照が異なるため、identicalはfalseを返します。

Dog dog = Dog(name: 'pochi');
Cat cat = Cat(name: 'tama');

bool result = identical(dog, cat);
print(result); // => false

変数が異なっても、参照が等価であればidenticalはtrueを返します。

Dog dog1 = Dog(name: 'pochi');
Dog dog2 = dog1;

bool result = identical(dog1, dog2);
print(result); // => true

identicalが返すbool値は、==の結果とは異なります(以下の例では==オペレーターをoverrideしてnameが等しければ==がtrueを返すようにしています)。

Dog dog1 = Dog(name: 'pochi');
Dog dog2 = Dog(name: 'pochi');

bool result = identical(dog1, dog2);
print(result); // => false
print(dog1 == dog2); // => true

Reference

  1. identical function - dart:core library - Dart API

#Dart

About me 😎

profile

茨城県つくば市在住のソフトウェアエンジニアです。専門領域はAndroidアプリ開発で、特にアーキテクチャに興味があります。某社でAndroidアプリ開発のテックリードをしています。

Jetpack ComposeによるAndroid MVVMアーキテクチャ入門の著者です。

👉 もっと詳しく

Writing 📝

Android MVVMアーキテクチャ入門

Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。

👉 もっと詳しく

See Also 👀