私は[フロート][Float]などの特定の配列タイプを拡張するにはどうすればよいですか?
extension CollectionType where Generator.Element == Float, Index == Int, Index.Distance == Int {
func sum() -> Float {
return self.reduce(0,combine: +)
}
var addThem:Float {
return self.reduce(0,combine: +)
}
}
に機能を追加するには、次実装しましたこれは動作しているようですので、私は今、この
let x:[Float] = [1, 2, 3]
x.sum() // 6
x.addThem // 6
を行うことができますすべてが良いです。
しかし、私は拡張子にこれを追加したとき
func doesSomething() {
var data = self
let background = [Float](count: self.count, repeatedValue: 0)
// Compiler does not like this statement
data = background
}
遊び場と文句を言い、「[フロート]は自己への転換ではありません。」私はこの
let background = [Generator.Element](count: self.count, repeatedValue: 0)
遊び場にコードを変更すると
は、「非機能タイプ[Float.Type]の値を呼び出すことはできません。」と応答します
そして私は私がdata = background
を割り当てるときに、同じ構文エラー「[フロート]が自己に変換できない」与えるこの
let background:[Generator.Element] = [Float](count: self.count, repeatedValue: 0)
を試してみました。
またはそれに相当する変数をdata
に割り当て、self
を上記の内線番号に割り当てるにはどうすればよいですか?
selfはプロトコルであるcollectionTypeなので、実際のselfの型は配列であるとは限りません。 collectionTypeには、ArrayまたはDictionary、またはCollectionTypeに準拠するその他の型を指定できます。 –
'var data = self as not! 'はできません! [Float] ' – Santosh
http://stackoverflow.com/a/28288619/2303865 –