2013-10-17 4 views
10

Ich kann nicht herausfinden, wie man ein leeres Array von Tupeln initialisiert. Die manual sagt:Initialisiere ein leeres Array von Tupeln in Julia

Der Typ eines Tupel von Werten die Tupel von Typen von Werten ist ... Dementsprechend kann ein Tupel von Typen überall eine Art erwartet wird, verwendet werden.

Doch funktioniert das nicht:

myarray = (Int64,Int64)[] 

Aber das tut:

Int64[] 

Es eine Art scheinen würde vor den leeren eckigen Klammern zu erwarten ist, aber der Tupel Typ doesn arbeite nicht. Diese <type>[] Syntax ist die einzige Möglichkeit, die ich finden kann, um eine leere typisierte Array zu erhalten (andere Methoden scheinen eine Reihe von #undef Werte zu produzieren). Ist der einzige Weg dazu, und wenn ja, wie kann ich das Array mit Tupeln schreiben?

BTW, mein Anwendungsfall erstellt eine Reihe von zunächst unbestimmter Länge und schieben Tupel in einer Schleife.

Antwort

10

Sie können dafür Array((Int,Int),0) tun. Es ist wahrscheinlich möglich, getindex Methoden hinzuzufügen, um (Int,Int)[] funktionieren zu lassen, aber ich bin mir nicht sicher, ob es das wert ist. Fühlen Sie sich frei, ein Problem zu öffnen. sowie

+1

Danke! Ihre Lösung funktioniert und ich habe das Problem hinzugefügt. Ich denke, es ist es definitiv wert - es ist wirklich verwirrend, wenn die tatsächliche Sprachsyntax nicht mit dem übereinstimmt, was das Handbuch sagt. –

7

Für Menschen, die für die neueste Lösung zu suchen,

Tuple{Int, Int}[] Werke in v0.4

Auch die ausführliche Art und Weise Array{Tuple{Int, Int}}(0) Werke in v0.4.

Erzeugt ein 0-element Array{Tuple{Int64,Int64},1}