0
如下檢查泛型類型是
class A<T:Any>{
var value:T?
}
我想知道我怎麼能限制噸至是一個函數的類型,可以編寫代碼,我已經定義了一個泛型類斯威夫特函數類型值()在A類
let a = A<()->()>()
如下檢查泛型類型是
class A<T:Any>{
var value:T?
}
我想知道我怎麼能限制噸至是一個函數的類型,可以編寫代碼,我已經定義了一個泛型類斯威夫特函數類型值()在A類
let a = A<()->()>()
通用代碼可以編寫靈活,可重複使用的˚F和 類型,可以與任何類型一起使用,服從您要求定義的 。
這是使用泛型的主要目的。
就你而言,可能這是如何使用它們的不正確方法。你可能想使更多的簡單:
typealias funcion =()->()
class A {
private var value:funcion?
init(value: @escaping funcion) {
self.value = value
}
func doSomething() {
print("do something 01")
if let iplementedValue = value {
iplementedValue()
}
print("do something 02")
}
}
實例化:
let aObject = A(value: {
print("I want to this in the middle of my \"doSomething\"")
})
aObject.doSomething()
輸出應該是這樣的:
do somthing 01
I want to this in the middle of my "doSomething"
do somthing 02
希望這有助於。
@Hamish它確實如此,但他想強制「任何」爲「() - >()」如果我沒有錯誤 –
這是有點不清楚你問的。如果你能限制'T',以便它只能被函數類型滿足(你不能AFAIK) - 那麼你就不能在你的類中說'value?()',因爲你不會不知道'T'有多少個參數,或者它們是什麼類型,也不知道返回類型。如果你只是想讓'value'接受'() - >()'函數,那麼我不明白爲什麼你需要首先讓你的類是通用的 - 只需鍵入'(value)'(() - > ))?'。 – Hamish
我也不明白這個問題。你上面寫的代碼是完全有效的Swift(':Any'是多餘的,但不會傷害任何東西)。你遇到什麼問題? –