okuzawatsの日記

Android / Kotlin Enthusiast 🤖

Dartの拡張メソッド

Dart 2.7以降、Dartでは型に拡張メソッドを定義して、機能を追加することができます。構文は以下です(ref. 1)。

extension <extension name> on <type> {
  (<member definition>)*
}

以下の例ではint型に拡張メソッドとしてtoTenTimes()を定義しています。

extension IntExtension on int {
  int toTenTimes() {
    return this * 10;
  }
}

int型に対して、あたかもint型に元からtoTenTimes()というメソッドが定義されていたかのようにtoTenTimes()を呼び出すことが可能になります。ただし、インポートは必要です。拡張メソッドの中では、thisで対象のクラスのインスタンスにアクセスすることができます。

int answer = 42.toTenTimes();
print(answer); // => 420

拡張について名前を定義することができます。上の例では、IntExtensionという名前で拡張をしています。拡張に名前を定義している理由は、「APIがコンフリクトした時に備えて拡張は名前を持っている(extensions have names, which can be helpful if an API conflict arises)(ref. 1)」とのことです。

Reference

  1. Extension methods | Dart

#Dart

About me 😎

profile

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

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

👉 もっと詳しく

Writing 📝

Android MVVMアーキテクチャ入門

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

👉 もっと詳しく

See Also 👀