下面是一個簡單斯威夫特功能函數中的Swift常量(帶有計算)?
fileprivate func test()->String{
let c = Array("abc".characters)
let k = UInt32(c.count)
let r = Int(arc4random_uniform(k))
return String(c[r])
}
(我選擇了這個例子,因爲,很顯然,它的東西,你可以調用十億倍,產生某種輸出,所以你可能在設置兩個關注性能常量)。
請注意,它必須做一些計算才能得到c
,並且確實得到k
它必須使用c
。
我的問題很簡單:每次調用這個函數
test()
test()
test()
其實
它計算k
,和/或我每次調用它c
,或確實是他們只計算一次 ?
(如果「只有一次」,那麼作爲好奇心:它第一次調用函數?或者編譯器安排在啓動時單獨完成它?或者它知道它可以在編譯過程中計算它們?)
我經常使用的全球計算性能,而不是像這樣
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
}()
(也許fileprivate
)如果回答上述問題是「沒有,c
和數k '每次你都會計算c所有測試「,那麼在那種情況下,你怎麼能把一種靜態計算屬性放在函數內?
太棒了,所以它在Swift中執行靜態是枚舉靜態的。傑出,謝謝。來自位碼的決定性信息,謝謝。 – Fattie