2017-03-23 21 views
1

配列で指定されたパラメータのセットでdartの関数を呼び出そうとしています。どのくらいの数のパラメータがあるかを知らずに、関数にパラメータを渡すことができるようにしたい。Dartでパラメータの配列を持つ関数を呼び出す

例:

someFunc(var a, var b, var c) {...} 
paramArray = [1,2,3]; 

callFunction(var func, var params) { 
    //Here is a sloppy workaround to what I want the functionality to be 
    switch(params.length) { 
    case 0: 
     func() 
     break; 
    case 1: 
     func(params[0]) 
     break; 
    case 2: 
     func(params[0], params[1]) 
     break; 
    ... 
    } 
} 

callFunction(someFunc, paramArray); 

someFuncの署名を変更することなく、ダーツでこれを行うにはクリーンな方法が存在していますか?

答えて

1

私にはわからない。この時点で、Dartはvarargsをサポートしていません。今のところ、代わりにIterableをパラメータとして使用してください。

0

私はしませんので、ずっと前に同様の質問を投稿:Packing/Unpacking arguments in Dart

は、現在サポートされていないが、ダーツのチームは、この機能を認識しています。しかし、彼らの優先順位。

2

Function.applyメソッドは、あなたが望むものを正確に行います。 Function.apply(func, params)を実行し、パラメータが一致する場合はfuncを呼び出します(一致しない場合はスローします)。

関連する問題