Swift具有可以作爲參數傳遞的第一類函數。swift中的第一類泛型函數?
func a() {
}
func b(x:()) {
}
// Pass a to b…
b(a)
Swift具有泛型函數。
func generic<T>(x: T) {
}
但是,確實斯威夫特讓我過去一通用函數作爲參數傳遞給另一個函數?
let anIntService = Service<Int>()
let astringService = Service<String>()
func attach<T>(service: Service<T>, to value: T) {
// Perform type safe attaching of `value` to `service`.
}
func doAttaching(attach: (Service<T>, to T)->Void) {
attach(anIntService, to: 42)
attach(aStringService, to: "Hello World!")
}
doAttaching(attach)
...或者它只是讓我傳遞一個通用函數的特定實例嗎?
如果可能,請說明定義接受泛型函數作爲參數的函數的語法。
如果這不被支持,一種解決方法是將通用函數定義爲結構的某個方法,或者傳遞一個方法來代替那個方法。這是不理想的現象,因爲消費的功能沒有得到這麼好的調用語法,他們需要做的:
func doAttaching(attach: Attacher) {
attacher.attach(anIntService, to: 42)
attacher.attach(aStringService, to: "Hello World")
}
感謝您的回覆,但我不認爲這就是我所需要的。所以,在你的例子'callFunction'中被調用的函數,仍然沒有得到通用函數。它得到了一個特定的實例,由你調用的'parameter'的類型決定 - 在本例中爲'123',所以Int。我想在您的示例中將'identity'作爲_fully generic_函數傳遞給'callFunction'。然後'callFunction'的定義可以用多種類型調用它的'function'參數。 – Benjohn
哦,我看到了,對不起,我誤解了這篇文章:( – Alexander
沒問題!謝謝無論如何:-) – Benjohn