我想使用枚舉來包含泛型函數。這些枚舉將作爲參數傳遞,然後可以相應地執行枚舉中的函數。在枚舉中使用泛型函數
你如何設置在枚舉定義,這樣,他們將被視爲功能泛型類型要執行?請注意,我有可能,我可能要通過各種函數定義。
讓我知道,如果我在這兒可笑。 :)
// Define an enum to pass into my APIs. The S and F are meant to be functions I can define in anyway
enum FormattedResult<S, F> {
case Success(S)
case Failure(F)
func run<T> (a:T) {
switch (self){
case .Success (let completion):
// QN: How do I execute this? completion() will of course fail
debugPrint(completion)
case .Failure (let failure):
// QN: Same here
debugPrint(failure)
}
}
}
// I want to define a callback for someone else to call. I will be passing this to the error
var k1 = FormattedResult<(Int)->(), (String)->() >.Success(
{(a: Int) in
debugPrint("xxxxx")
})
// the APIClient can run this upon completion
k1.run(2)
// similarly for failures
var k2 = FormattedResult<(Int)->() , (String)->()>.Failure(
{(error: String) in
debugPrint(error)
}
)
k2.run("some error happened...")
'run(a:T)'方法中'T'的用途是什麼? –
Kevin
因此調用者可以通過運行函數傳遞一個值來執行y。 –
運行功能應該採用「成功」定義的功能並運行T –