2016-05-26 2 views
2

配列を持つ構造体を使っています。私は配列に新しい要素を追加したいと思いますが、配列は不変なので、単純に追加することはできません。新しい配列を作成してそれに追加し、次に拡張された配列で新しい構造体を作成する必要があります。新しい配列を返すための配列append()

配列を突然変異させるのではなく、新しいものを返すappend()のような関数はありますか?いいえ、私はそれを覚えていますか?これは、新しい配列を宣言して追加するよりも簡単です。

答えて

8

あなたはちょうど2つの配列を一緒に追加しませんか?

let originalArray: [Type] = ... 
let objectToAppend: Type = ... 
let newArray = originalArray + [objectToAppend] 


あるいは、延長で、ご希望の場合:

extension Array { 
    func arrayByAppending(o: Element) -> [Element] { 
     return self + [o] 
    } 
} 
0

はこれを試してみてください:単一のオブジェクトのための

extension NSArray { 
    func myAppend(arrToAppend: NSArray) -> NSArray { 
     let r : NSMutableArray = NSMutableArray(array: self) 
     r.addObjectsFromArray(arrToAppend as [AnyObject]) 
     return r.copy() as! NSArray 
    } 
} 

extension NSArray { 
    func myAppend2(objToAppend: AnyObject) -> NSArray { 
     let r : NSMutableArray = NSMutableArray(array: self) 
     r.addObject(objToAppend) 
     return r.copy() as! NSArray 
    } 
} 
+0

感謝を。しかし、私は要素を追加したいだけです。 (配列ではない) – Daniel

1

は次のように試してみてください:

extension Array { 
    func appendToNewArray(newElement: Element) -> Array { 
     var result = self 
     result.append(newElement) 
     return result 
    } 
} 

let ar = [1,2] 

let ar2 = ar.appendToNewArray(3) 
print(ar2) // "[1, 2, 3]\n" 
関連する問題