我可以让一个函数返回一个具有通用返回类型的值,但是当我使用 a 时我也不能让它返回一个值where clause
。
这是我正在使用的代码:
func genericFunction<T: Collection>(collectionOne: T, collectionTwo: T) where T.Iterator.Element == (NSNumber) -> [Int] {
}
它编译正常。但是如果我尝试返回这个:
let array = [1]
return array
我收到这个错误:'unexpected non-void return type in void function' 但正如您从方法声明中看到的那样,有一个返回类型,所以我可能使用了错误的语法来声明该方法。
我应该使用什么语法从方法中返回一个值?
提前致谢。
func genericFunction<T: Collection>(collectionOne: T, collectionTwo: T)
where T.Iterator.Element == (NSNumber) -> [Int]
定义一个函数返回Void
,具有约束
T.Iterator.Element == (NSNumber) -> [Int]
即元素类型被限制为(NSNumber) -> [Int]
闭包。
你可能想要的是
func genericFunction<T: Collection>(collectionOne: T, collectionTwo: T) -> [Int]
where T.Iterator.Element == (NSNumber)
这是一个返回的函数[Int]
,元素类型限制为NSNumber
.
换句话说, where 子句出现在返回类型之后。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句