Hier ist eine einfache Swift FunktionSchnelle Konstanten (mit einer Berechnung) in Funktionen?
fileprivate func test()->String{
let c = Array("abc".characters)
let k = UInt32(c.count)
let r = Int(arc4random_uniform(k))
return String(c[r])
}
(ich dieses Beispiel gewählt, weil, natürlich, es ist etwas Sie Milliarden mal nennen können irgendeine Art von Ausgabe zu erzeugen, so dass Sie möglicherweise bei der Einrichtung der zwei für die Leistung betroffen sein Konstanten.)
Beachten Sie, dass es ein bisschen Berechnung zu c
zu tun, und in der Tat zu k
c
zu verwenden ist.
Meine Frage ist einfach: Jedes Mal, wenn Sie
diese Funktion aufrufentest()
test()
test()
in der Tat ist es k
nicht berechnen und/oder c
jedes Mal wenn ich es nennen, oder in der Tat sind sie nur einmal berechnet ?
(wenn "nur einmal", dann als Kuriosität: tut es das erste Mal ich die Funktion aufrufen? Oder vielleicht der Compiler arrangiert, um es beim Start separat getan zu haben? Oder für diese Angelegenheit weiß es es kann berechnen sie während der Kompilierung?)
ich oft global berechneten Eigenschaften verwenden, eher wie dieses
let basicDF : DateFormatter = {
print("this will only be done once per launch of the app")
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
(vielleicht mit fileprivate
) Wenn die Antwort auf die obige Frage „nein, c
und‚k 'werden jedes Mal berechnet, wenn Sie c all test ", wie kann man dann eine Art statisch berechnete Eigenschaft in eine Funktion einfügen ??
Fantastisch, so ist es in Swift enumstatisch, Statik zu machen. Hervorragend, danke. Entscheidende Infos aus dem Bitcode, danke. – Fattie