2016-11-02 11 views
0

私はバッチプロセスを実行するアプリケーションを持っていますので、proessesを段階的に実行する必要があります。そのため、問題を解決しました。Swift 3.0のパラメータを減らす方法

すべてのプロセスに少なくとも1つのパラメータが必要です。バッチ処理関数は合計で11個のパラメータを必要とする。それは非常に醜いです。

Swift 3.0では関数型プログラミングが導入されて以来、これを行うためのより良い方法がありますか? CodeExample:

のViewController

@IBAction func StartButtonClicked(_ sender: NSButton) { 
    BatchProcess(
     param1:param1, 
     param2:param2, 
     param3:param3, 
     param4:param4, 
     para..........) 
} 

BatchProcess

func BatchProcess(param1:param1,param2:param2,param3:param3,.....){ 
    try process1(param1) 
    try process2(param2,param3) 
    try process3(param4) 
    try proce.......... 
} 
+1

これが必要なのかどうかわかりませんが、 'パラメータの配列'を単一のパラメータとして使うのはどうですか?例: 'func BatchProcess(params:Array){' – GoGreen

答えて

0

は、あなたの目的地のクラスと呼び出し元のクラス間の新しいクラスを追加します。そのクラスをゲートウェイとしてターゲットクラスに使用します。このゲートウェイクラスには、優先パラメータのみを持つメンバ関数があります。あなたは擬似コード形式でappropiateパラメータ

例で満たされたパラメータの長いリストを使用して元の宛先ルーチンを呼び出すメンバ関数で

func a(param1) { 
    BatchProcess(param1,nil,nil,nil,.....) 
} 

func b(param2, param3) { 
    BatchProcess(nil,param2,param3,nil,nil,nil,.....) 
} 

func c(param1, param3) { 
    BatchProcess(param1,nil,param3,nil,nil,nil,.....) 
} 

これはまた利点を持っています

関連する問題