gpt4 book ai didi

swift - 我可以在 Swift 中将枚举分配给闭包参数吗

转载 作者:行者123 更新时间:2023-11-28 12:20:03 25 4
gpt4 key购买 nike

我正在阅读这篇文章 http://chris.eidhof.nl/post/reducers/当我发现一段令人费解的 swift 时,我意识到我不太明白。

给定这些枚举

enum Message {
case inputChanged(String?)
case ratesAvailable(data: Data?)
case reload
}

enum Command {
case load(URL, onComplete: (Data?) -> Message)
}

在下面的函数中

mutating func send(_ message: Message) -> Command? {
switch message {
case .inputChanged(let input):
inputAmount = input.flatMap { Double($0) }
return nil
case .ratesAvailable(data: let data):
guard let data = data,
let json = try? JSONSerialization.jsonObject(with: data, options: []),
let dict = json as? [String:Any],
let dataDict = dict["rates"] as? [String:Double],
let rate = dataDict[Currency.usd.rawValue] else { return nil }
self.rate = rate
return nil
case .reload:
return .load(ratesURL(), onComplete: Message.ratesAvailable)
}
}

在这个函数的最后一行。如何将枚举 Message.ratesAvailable 分配为命令枚举关联值中定义的 clousure 参数?

最佳答案

因为 Message.ratesAvailable 有类型 (Data?) -> Message

你可以see for yourself :

import Foundation

enum Message {
case inputChanged(String?)
case ratesAvailable(data: Data?)
case reload
}

print(type(of: Message.ratesAvailable)) // => (Optional<Data>) -> Message

关于swift - 我可以在 Swift 中将枚举分配给闭包参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com