我在XCode 7.3.1上使用Swift 2.2並嘗試從另一個Generic
函數調用Generic
函數。Swift通用函數調用另一個通用函數
代碼
class Thing1 {
let variable: SomeProtocol
init<A: SomeProtocol>(variable: A) {
self.variable = variable
self.add1(self.variable)
}
func add1<A: SomeProtocol>(stuff: A) {
let thing: Thing2 = Thing2()
thing.add2(stuff)
}
}
class Thing2 {
func add2<A: SomeProtocol>(stuff: A) {
}
}
protocol SomeProtocol { }
add1("a") // Cannot invoke 'add1' with an argument list of type '(String)'
add1(4) // Cannot invoke 'add1' with an argument list of type '(Int)'
我得到的錯誤。
'Cannot invoke add with an argument of list type '(Whatever type I used to call the function)''
我清理了一下代碼。在一個操場上它編譯得很好,但是當你嘗試並調用'add1'時,它不會讓你。 –
@CodyWeaver你可以請你發佈一個儘可能接近編譯的最小例子嗎?通過這種方式,我們都可以一致地進行測試,而無需拿出我們自己的'SomeProtocol','Thing'等實現。 – Alexander
增加了代碼,使它更清楚發生了什麼。 –