💁♀️
Dartのcallとは?
💡Tips
Dart クラスのインスタンスを関数のように呼び出せるようにするには、call() メソッドを実装します。 call() メソッドを使用すると、それを定義する任意のクラスのインスタンスが関数をエミュレートできます。 このメソッドは、パラメーターや戻り値の型など、通常の関数と同じ機能をサポートします。 次の例では、WannabeFunction クラスは、3 つの文字列を受け取り、それらを連結し、それぞれをスペースで区切って感嘆符を追加する call() 関数を定義します。 「実行」をクリックしてコードを実行します。
公式のサンプル:
class WannabeFunction {
String call(String a, String b, String c) => '$a $b $c!';
}
var wf = WannabeFunction();
var out = wf('Hi', 'there,', 'gang');
void main() => print(out);
🤔でもこれだけだとよくわからない?
Dartでは、callメソッドを使用して、nullableな関数オブジェクトを安全に呼び出すことができます。以下にその例を示します:
class NullableFunctionHolder {
Function(int)? nullableFunction;
void call(int n) {
nullableFunction?.call(n);
}
}
void main() {
final holder = NullableFunctionHolder();
holder.nullableFunction = (int n) {
print('Called with $n');
};
// nullableFunctionがnullでない場合にのみ呼び出されます
holder(10);
}
このコードでは、NullableFunctionHolderクラスにnullableな関数オブジェクトnullableFunctionを保持しています。callメソッドでは、nullableFunctionがnullでない場合にのみ、その関数を呼び出します。これにより、null参照エラーを防ぐことができます。
もし?
がないとどうなるのか?
エラー出ましたね。初期値ないから当然か...
初期化を待ってあげるlate
をつければ使うことはできる。
まとめ
Dartのcallについて解説してみました。普段使うことはないので、どこで使ってみたいですね。
参考になった記事
Discussion