Dart2を使用しています
私がやりたいのは、開発者に、引数を受け入れないか、最大で1つの引数を受け入れるコールバックを使用するように強制することです。
たとえば、次の方法があります。
void doYourJob(void onComplete([result])){ //this is what I have tried, buts its wrong - requires ([arg])=> callback
.... do your job
onComplete(result);
}
私はその方法を2つの方法で使用できるようにしたいと思います。
doYourJob(()=>doStuff);
そして
doYourJob((result)=>doMoreStuffWithResult(result));
このようなことは可能ですか?
いいえ。あなたがやろうとしていることは不可能です。
ゼロまたは1つの引数を取る関数を受け入れる関数型が必要です。つまり、単項関数とnullary関数を渡せるようにする必要があります。すなわち、両方のスーパータイプである関数型であるvoid Function()
とvoid Function(Object)
。
これは、オプションのパラメーターを持つ関数タイプと同じではありません。このような関数型では、すべての引数がゼロと1つの引数の両方で呼び出せる必要があります。その関数はゼロ引数で呼び出すことができないため、純粋な単項関数をそれに渡すことはできません。
何もありません関数型の両方のスーパータイプであるvoid Function()
とはvoid Function(Object)
。最も近いスーパータイプはですFunction
。これは、単項関数とnull関数だけでなく、任意の関数を受け入れます。それを使用することはできますが、タイプチェックは失われます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加