2017-02-27 8 views
0

最新のプレイグラウンドにジェネリック型のスタックを書き込もうとすると、この奇妙なエラーが発生しました。 私は本当に何が間違っているのか理解していない、誰かが私にこのエラーを持っている理由を説明することができますか?は、 '(T)'型の引数リストで 'append'を呼び出せません

class MyStack<T> { 
    var stack1 = [T]() 

    func push<T>(value: T) { 
     stack1.append(value) // Error: cannot invoke 'append' with an argument list of type '(T)' 
    } 
} 

答えて

1

クラスは、すでにpushpush<T>として宣言されている場合は、あまりにもプッシュは、一般的な

​​

を作るために必要ジェネリックではない、一般的なパラメータは、クラスで定義されたものを上書きします。私たちは、一般的なパラメータの名前を変更した場合ので、私たちはこのように提示

class MyStack<T1> { 
    var stack1 = [T1]() 

    func push<T2>(value: T2) { 
     stack1.append(value) // Error: cannot invoke 'append' with an argument list of type '(T2)' 
    } 
} 

を得るだろう、それは我々が[T1]T2をプッシュすることはできません意味があります。

+0

ありがとうございます!それは本当に便利です。 –

関連する問題