2016-12-07 8 views
0

に配列の要素を変換します私は彼らの基本クラス型に私の配列内の要素を変換しようとしている彼らの基本クラス型

extension Array{ 

    mutating func convertToBase<A>(type: A.Type){ 

     let parentArray = self.map{ $0 as type } 
    } 
} 

class A {} 
class B: A {} 

let instanceB = B() 
var array = [instanceB] 
array.convertToBase(type: A.self) 

が、それは私にこのエラーを伝える保つ:

'Use of undeclared type 'type''

enter image description here

+0

これを行う主な目的は何ですか?そのような機能を行うのはちょっと変だと思う... –

+0

私はちょっと変わっているが、アプリケー –

答えて

2

これはまったく意味がありません。 Bの基本クラスの型がAの場合は、どうして変換する必要がありますか?実行時にすべてB、またA秒ではありませんか?

extension Array{ 
    mutating func convert<G>(to type : G.Type) -> [G] { 
     let parentArray = self.map { 
      $0 as! G 
     } 
     return parentArray 
    } 
} 

注これはANYを変換しようとしていること:あなたの方法を使用して上の暴勇している場合、これはトリックを行う必要があります

let instanceB = B() 
var array = [instanceB] 
var aArray = array as [A] 

:これはのように単純である必要があり、「変換」

ジェネリックタイプGに入力します。たとえば、この:

var anotherArray = array.convert(to: A.self) 

...意志トラップはBAのサブタイプではない場合。サブタイプがAanotherArrayの場合は[A]となります。私はこの実用的に役に立たない機能を書いたとは信じられません。

関連する問題