2014-05-14 3 views
6

Angenommen, ich möchte ein mehrdimensionales Array erstellen, dessen Dimensionen/Größe pro Dimension in einem Array angegeben sind. Ich möchte so etwas tun:Julia: Aufruf von Array() mit einem Array von Dimensionen

dims = [2,5,6] # random example, the idea is I don't know dims ahead of time 
arr = Array(Float64, dims) 

Das ist nicht erlaubt. Im obigen Fall sollte man verwenden:

arr = Array(Float64, dims[1], dims[2], dims[3]) 

Ich weiß nicht, die Länge der dims vor der Zeit, so dass die obige Lösung nicht für mich arbeiten. Gibt es eine saubere Workaround außerhalb der Verwendung von einigen fiesen Sprintfs und eval?

Danke!

+0

Sie verwenden normalerweise nicht Sprintf mit Eval in Julia. Es gibt viel bessere Möglichkeiten für die Metaprogrammierung. – ivarne

Antwort

10

Ein wirklich nützlicher Operator in Julia ist der "splat", .... In diesem Fall möchten Sie einfach:

arr = Array(Float64, dims...)