est ici une simple fonction SwiftConstantes rapides (avec un calcul) dans les fonctions?
fileprivate func test()->String{
let c = Array("abc".characters)
let k = UInt32(c.count)
let r = Int(arc4random_uniform(k))
return String(c[r])
}
(j'ai choisi cet exemple parce que, évidemment, il est quelque chose que vous pouvez appeler des milliards de fois pour générer une sorte de sortie, de sorte que vous pourriez être concerné pour la performance dans la mise en place des deux constantes.)
Notez qu'il doit faire un peu de calcul pour obtenir c
, et en effet pour obtenir k
il doit utiliser c
.
Ma question est simple: chaque fois que vous appelez cette fonction
test()
test()
test()
en fait-il calculer k
, et/ou c
chaque fois que je l'appelle, ou bien sont-ils seulement calculées une fois ?
(si "seulement une fois", alors par curiosité: il fait cela la première fois que j'appelle la fonction? Ou peut-être le compilateur s'arrange-t-il pour le faire séparément au démarrage? Ou sait-il qu'il peut les calculer lors de la compilation?)
J'utilise souvent des propriétés globales calculées, un peu comme ce
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
}()
(peut-être avec fileprivate
) Si la réponse à la question ci-dessus est « non c
et « k 'sont calculés chaque fois que vous c tous les tests ", alors dans ce cas comment pouvez-vous mettre une sorte de propriété calculée statique à l'intérieur d'une fonction ??
Fantastique, c'est donc énum-statique de faire de la statique dans Swift. Exceptionnel, merci. Informations décisives du bitcode, merci. – Fattie