2014-07-08 75 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 
    } 
}