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_maxvi
i
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.
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
Alle vDSP-Funktionen erwarten für ihre Zeigerargumente nicht NULL, sofern nicht anders angegeben. –
@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