配列を持つ構造体を使っています。私は配列に新しい要素を追加したいと思いますが、配列は不変なので、単純に追加することはできません。新しい配列を作成してそれに追加し、次に拡張された配列で新しい構造体を作成する必要があります。新しい配列を返すための配列append()
配列を突然変異させるのではなく、新しいものを返すappend()のような関数はありますか?いいえ、私はそれを覚えていますか?これは、新しい配列を宣言して追加するよりも簡単です。
配列を持つ構造体を使っています。私は配列に新しい要素を追加したいと思いますが、配列は不変なので、単純に追加することはできません。新しい配列を作成してそれに追加し、次に拡張された配列で新しい構造体を作成する必要があります。新しい配列を返すための配列append()
配列を突然変異させるのではなく、新しいものを返すappend()のような関数はありますか?いいえ、私はそれを覚えていますか?これは、新しい配列を宣言して追加するよりも簡単です。
あなたはちょうど2つの配列を一緒に追加しませんか?
let originalArray: [Type] = ...
let objectToAppend: Type = ...
let newArray = originalArray + [objectToAppend]
あるいは、延長で、ご希望の場合:
extension Array {
func arrayByAppending(o: Element) -> [Element] {
return self + [o]
}
}
はこれを試してみてください:単一のオブジェクトのための
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
}
}
は次のように試してみてください:
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"
感謝を。しかし、私は要素を追加したいだけです。 (配列ではない) – Daniel