2016-06-14 9 views

Antwort

0

eine Range Verwendung in einer Anordnung zur Auswahl erzeugt ein ArraySlice, kein Array.

Also, wenn Sie wollen, um diese „Scheibe“ passieren zu einer Funktion:

var b : [Double] = [0,1,2,3,4,5,6,7,8,9] 
var c = 5 

let slice = b[0...c] 

Sie Ihre Funktion ein ArraySlice mit der richtigen Art machen müssen akzeptieren:

func xyz(chunk: ArraySlice<Double>) { 
    print(chunk) 
} 

xyz(slice) 

Aber wenn Sie wollen Um nur normale Arrays zu verwenden, muss die Funktion ein Array akzeptieren und das Segment in ein Array umwandeln, wenn die Funktion aufgerufen wird:

func xyz(chunk: [Double]) { 
    print(chunk) 
} 

xyz(Array(slice)) 
+0

danke! func xyz (chunk: [Double]) -> [Double] ich habe var y: Double wie kann ich y letzten element von xyz [Double] zuweisen? – Anton

+0

Um das letzte Element zu erhalten, tun Sie 'array.last'. Es funktioniert mit Arrays und Arrayslices. Es gibt ein optionales zurück, so dass Sie es auch (sicher) auspacken müssen. Sie könnten auch '[array.count-1 ... array.count-1]' tun, aber es ist schrecklich. ;) – Moritz

+0

Eric, was ist, wenn b eine Struktur ist, die x enthält: Double. Und ich möchte wieder eine Funktion aufrufen: xyz (b [0 ... 5]. X) - wie das zu verwalten? Danke nochmal – Anton