由於今天比较晚才到家,所以可能内容会比较少一点。
另外今天在火车上看到github上面有几个开源的 Github 分享列表。
有蛮多实用的东西
macOS status monitoring app written in SwiftUI.
github上面真的蛮多东西可以参考的。
现在进入正题
Async/await:
以前:
func fetchWeatherHistory(completion: @escaping ([Double]) -> Void) {
// Complex networking code here; we'll just send back 100,000 random temperatures
DispatchQueue.global().async {
let results = (1...100_000).map { _ in Double.random(in: -10...30) }
completion(results)
}
}
func calculateAverageTemperature(for records: [Double], completion: @escaping (Double) -> Void) {
// Sum our array then divide by the array size
DispatchQueue.global().async {
let total = records.reduce(0, +)
let average = total / Double(records.count)
completion(average)
}
}
func upload(result: Double, completion: @escaping (String) -> Void) {
// More complex networking code; we'll just send back "OK"
DispatchQueue.global().async {
completion("OK")
}
}
以前调用的程序码
fetchWeatherHistory { records in
calculateAverageTemperature(for: records) { average in
upload(result: average) { response in
print("Server response: \(response)")
}
}
}
现在可以使用这样的方式
func fetchWeatherHistory() async -> [Double] {
(1...100_000).map { _ in Double.random(in: -10...30) }
}
func calculateAverageTemperature(for records: [Double]) async -> Double {
let total = records.reduce(0, +)
let average = total / Double(records.count)
return average
}
func upload(result: Double) async -> String {
"OK"
}
使用起来也更简单
func processWeather() async {
let records = await fetchWeatherHistory()
let average = await calculateAverageTemperature(for: records)
let response = await upload(result: average)
print("Server response: \(response)")
}
>>: Day 22 民生公共物联网资料应用竞赛 完整作品+海报!!
9/25: 隔一天才发现因为前一天字数不够,草稿发文不成功所以断赛了QQ 还是把昨天测试的结果放上来...
前言 想不到以前的草稿还能拿出来写。 最近将代码重构了,看情况回头修以前文章的bug(机率不大 re...
RAID tags: IT铁人 这个硬碟有多棒 在评断一个硬碟有多高的Availability时,我...
今天终於来到终点拉! 前几届参加一直半途而废的我,这次因为有大团队的组队, 不管是激励或压力,都促使...
嘿~~ 各位好,我是菜市场阿龙! 这集要介绍的是「泡泡排序(Bubble Sort)演算法的实作」 ...