2016-09-23 2 views
1

Es gibt einige ähnliche Methoden in Swift. Sie sehen ähnlich aus, tatsächlich sind ihre Funktionen auch ähnlich. Es sind dies:Warum benötigt Swift diese ähnlichen Funktionen? Ist es irgendwie überflüssig?

popFirst(), popLast(), dropFirst(), dropLast(), removeFirst(), removeLast()

Besonders popFirst() und removeFirst() nach Apple doc:

func popFirst()

Entfernt das erste Element der Auflistung und gibt es zurück.

func removeFirst()

Entfernt und liefert das erste Element der Sammlung.

Ihre Dokumentbeschreibungen sind völlig gleich. Eigentlich habe ich viel probiert (eine ganze Seite auf dem Spielplatz) um zu sehen, ob es signifikante Unterschiede zwischen diesen Methoden gibt. Die Antwort ist gibt es einige sehr kleine Unterschiede zwischen einigen Methoden und einige Methoden sind völlig gleichen nach meinem Test.

Einige Methoden, popFirst(), popLast() und dropLast(), dropFirst() verschieden sind, wenn auf String und Array verwendet. Aber laut meinem Test können sie alle durch removeFirst() und removeLast() ersetzt werden (trotz einiger kleiner Unterschiede).

Also meine Frage ist, warum Swift diese ähnlichen Methoden beibehalten muss. Ist es irgendwie überflüssig?

+0

Sie beachten Sie, dass „(obwohl es einige kleine Unterschiede sind).“ Sind diese Unterschiede nicht genau dieser Punkt unterschiedlicher Methoden? Welche sind "völlig gleich?"' popFirst() ',' removeFirst() 'und' dropFirst() 'haben definitiv unterschiedliche Verhaltensweisen (und in der Tat verschiedene Signaturen, so dass Sie in Playgrounds nicht testen müssen, da sie offensichtlich anders sind) –

+0

@RobNapier Wenn diese winzigen Unterschiede den Wert der Existenz dieser Methoden ausmachen, würde ich sagen: "Ok, gut." Aber ... Ich möchte eigentlich nur mehr über die grundlegenden Kenntnisse von Swift wissen, denke ich nicht Meine Frage lohnt sich downVote.Auch verwende ich Fragezeichen in meinem Fragetitel, nicht wie * "Es ist redundant !!" * –

Antwort

1

Obwohl Apple es nicht einfach zu finden gemacht hat, erwähnt es, dass popnil für eine leere Sammlung zurückgibt, und dass remove einen Fehler gibt, wenn es nichts zu entfernen gibt.

Allerdings sollten Sie in der Lage sein, das gleiche von den Unterschriften dieser Funktionen zu sagen:

  • popFirst kehrt ein optionales, was bedeutet, dass man sogar von einem leeren Sammlung erste Element Pop kann
  • removeFirst, auf der anderen Seite ist nicht optional. Signaturen wie diese implizieren, dass es ein Fehler ist, diese Methode in einem Zustand aufzurufen, in dem sie keinen Wert zurückgeben kann.

Diese leicht sein könnte bestätigt einen Spielplatz mit:

var test1 = Set<String>(["a", "b"]) 
let x1 = test1.popFirst() 
let y1 = test1.popFirst() 
let z1 = test1.popFirst()   // returns nil 
var test2 = Set<String>(["a", "b"]) 
let x2 = test2.removeFirst() 
let y2 = test2.removeFirst() 
let z2 = test2.removeFirst()   // Throws an error 
+0

FYI, die Dokumentation erwähnt dies im Abschnitt "Rückgabewert". Sie können auch Befehl + Klick a Methode in Xcode, um den "Header" mit der vollständigen Dokumentation zu sehen. –

+0

@ ThanhPham Sie haben recht, wenn ich in das Dokument klicke, sehe ich beide Effekte erwähnt. Danke! – dasblinkenlight

+0

Eigentlich habe ich durch die Doc viele dieser Methoden oft durch * Option + Klick * oder * Befehl + Klick * Ich bin nicht neu t o Swift, ich möchte nur wissen, ob es notwendig ist, all diese Methoden in Swift zu behalten. Jetzt weiß ich, diese kleinen Unterschiede scheinen euch allen sehr wichtig zu sein. Trotzdem danke. –

Verwandte Themen