如何从具有泛型返回类型和where子句的方法返回值

时间:2017-12-05 14:53:31

标签: swift generics where-clause

我可以让函数返回一个具有泛型返回类型的值,但是当我使用itemtap: function(view, index, target, record) { if(!this.myForm) this.myForm = Ext.create("Ext.form.Panel", {}); this.myForm.loadRecord(record); this.myForm.show(); } 时,我也无法返回一个值。

这是我正在使用的代码:

where clause

编译好。但如果我试着回复这个:

func genericFunction<T: Collection>(collectionOne: T, collectionTwo: T) where T.Iterator.Element == (NSNumber) -> [Int] {


}

我收到此错误:&#39; void函数中出现意外的非void返回类型&#39;但正如你可以看到方法声明中有一个返回类型,所以我可能使用了错误的语法来声明方法。

我应该使用什么语法从方法中返回值?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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-clause在返回类型后出现