以下沿着大書呆子牧場指南書我遇到了一個章節中的一段,要求您創建一個NumberFormatter
的實例。一切正常,但我注意到,格式化使用創建closure
爲:NumberFormatter只能寫在封閉
class ConversionViewController: UIViewController {
let numberFormatter: NumberFormatter = {
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 1
return nf
}()
func updateCelsiusLabel() {
if let celsiusValue = celsiusValue {
celsiusLabel.text = numberFormatter.string(from: NSNumber(value: celsiusValue.value))
} else {
celsiusLabel.text = "???"
}
}
}
只是出於好奇,我試圖像封閉的外創建此格式:
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 1
但得到的錯誤說
個預計聲明
我的問題是:
- 爲什麼不能
NumberFormatters
封閉外面在這種情況下, 創建? - 括號
()
表示在 結束時表示什麼?我的猜測是它是自我調用的,但爲什麼它需要成爲?
到目前爲止,我從來沒有見過用這種方式寫封閉。 Apple文檔中是否有解釋這一點的內容?
您可以在創建格式化程序的位置共享更多代碼嗎? –
可能的重複https://stackoverflow.com/questions/29835490/expected-declaration-error-using-swift/29835573#29835573 –
@Ahhhhhhhh我更新了我的問題。讓我知道這是否足夠。 –