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'是多余的,但不会伤害任何东西)。你遇到什么问题? –