2015-02-17 3 views
11

Does F # bietet idiomatische Möglichkeiten zusammenWie verkette ich Listen (und andere Sammlungen) in F #?

  • Sequenz und Liste zu verketten?
  • Liste und Liste zusammen in einer Liste? (nicht-destruktiv)
  • Liste und Liste zusammen in eine Liste, wenn es destruktiv ist?
  • veränderbare Arrays zusammen, destruktiv, in ein anderes veränderbares Array?

Und können Sie auch Tupeln verketten?

+0

Das ist eine Menge Fragen. Und nicht von ihnen ist tatsächlich spezifisch genug, um eine sinnvolle Antwort zu geben ... Gibt es ein bestimmtes Problem, das du lösen willst? – MarcinJuraszek

+0

Hm. Ich möchte nur die Vorteile des Expertenwissens ernten - ich denke, dass jemand, der mit der Sprache vertraut ist, in der Lage sein sollte, diese Konzepte zu erklären. Aber ich stimme zu, dass es nicht wirklich zum richtigen Q & A-Format passt. Lass mich es niederschreiben. –

+3

Scoped down ... –

Antwort

13

Sequenz und Liste zusammen

Es gibt keine spezielle Funktion dafür. Wenn die Sequenz die erste und die zweite die Liste ist, müssen Sie wählen, ob die erste Liste (und dann beim Anhängen mit) oder Seq.append gefolgt von List.ofSeq, die beide Listen kopiert, konvertiert wird.

So würde es Sinn machen, Ihre eigene Funktion zu schreiben.

Liste und Liste zusammen in einer Liste? (nicht-destruktiv)

tut dies.

Liste und die Liste zusammen in eine Liste, wenn es destruktiv ist

Listen unveränderlich sind, so gibt es keine zerstörerische append.

veränderbare Arrays zusammen, destruktiv, in ein anderes veränderbares Array?

In .NET können Sie die Größe von Arrays nicht ändern, daher gibt es keinen zerstörerischen Weg. Array.append erstellt ein neues Array (und wäre schneller als andere Optionen, weil es die Größe des Ergebnisses im Voraus kennt).

Und können Sie auch Tupeln verketten?

Nein, der Typ-System nicht lassen Sie den Typ einer Funktion ausdrücken, die Tupel anhängen würde (sie haben eine statisch bekannte Größe haben).

+16

Es gibt auch die '@' -Operator, die ich glaube, ist identisch mit 'List.append'. – YotaXP