2014-07-08 48 views
2

我目前正在使用的项目使用了很多泛型。尝试使用通配符时遇到问题。在泛型中的Swift通配符

在Java中我可以这样做:

public class testGeneric<T> { 

} 
public class testing { 
    public <T> void test (testGeneric<T> input) { 
      testGeneric<?> testOne = input; 
    } 
} 

没有任何错误。

在Swift中,我使用AnyObject(因为它意味着所有对象的基础,所以我认为它可以用相同的方式)。

然而,下面的引发错误(具体而言“T不等于AnyObject”):

class testGeneric<T> { 

} 

class testing { 
    func test <T> (input: testGeneric<T>) { 
     var testOne: testGeneric<AnyObject> = input 
    } 
} 

周围有点我发现搜索后,有在夫特(具体是“通配符模式”“_” )。但是,这似乎不适用于仿制药。

有没有办法解决这个问题?

在此先感谢。

+0

'AnyObject'不包括结构和原语。你可以尝试'任何',而不是功能符合,但我不知道这将工作 – connor

+0

@connor我试过使用任何,不幸的是它有同样的问题。 – Zenton

+0

是的。你可能想尝试一个演员。 '如果让var testOne:testGeneric =输入为? testGeneric {/ * code * /}'注意,如果T是一个函数类型,它的意思是不起作用 – connor

回答

0

我想你要找的是什么:

class testGeneric<T> { 
} 

class testing { 
    func test <T> (input: testGeneric<T>) { 
     var testOne: testGeneric<T> = input 
    } 
}