2017-05-10 3 views
1

Wenn ich vDSP für schnelle Berechnungen verwende, ist mir oft einer der Ausgabeparameter egal. Sagen wir, ich bin den Index eines Arrays Maximalwert zu finden:Ignorieren eines Ausgabeparameters von vDSP

var m:Float = 0 
var i:vDSP_Length = 0 
vDSP_maxvi(&array, 
      1, 
      &m, 
      &i, 
      vDSP_Length(array.count)) 

Im Idealfall würde Ich mag ganz loswerden m so dass vDSP_maxvii nur füllt. Etwas wie:

var i:vDSP_Length = 0 
vDSP_maxvi(&array, 
      1, 
      nil, 
      &i, 
      vDSP_Length(array.count)) 

Aber natürlich funktioniert das nicht („Null ist nicht kompatibel mit dem erwarteten Argumenttyp‚UnsafeMutablePointer <Float>‘“). Gibt es eine Art von Argument, das ich an solche Methoden senden kann, die "Ignoriere diesen Parameter" sagen? Danke fürs Lesen.

+0

Worin besteht der Schaden, wenn Sie nur eine lokale Variable erstellen und deren Wert ignorieren? Wenn es nur der Sauberkeit des Codes dient, könnten Sie eine Wrapper-Funktion erstellen, die das Argument auslässt. – Connor

+0

Alle vDSP-Funktionen erwarten für ihre Zeigerargumente nicht NULL, sofern nicht anders angegeben. –

+0

@ConnorNeville Es ist eher eine Geschwindigkeitsoptimierung für Fälle, in denen ich ein riesiges leeres Array erstellen muss, das gefüllt werden muss, obwohl ich nie den Inhalt verwende. – Rogare

Antwort

0

Mit Ausnahme von dokumentierten Fällen, in denen ein Null-Argument akzeptiert wird, müssen Sie eine gültige Adresse übergeben. Es gibt keinen Argumentwert, der vDSP anweist, das Argument zu ignorieren.

Verwandte Themen