gpt4 book ai didi

ios - 带有类型别名的协议(protocol)中的 AssociatedType

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:36 24 4
gpt4 key购买 nike

假设我有一个协议(protocol):

protocol Router {
associatedtype Answer
typealias AnswerCallback = (Answer) -> Void
}

有时我想存储一个 AnswerCallback 类型的变量

var answerCallback: Router.AnswerCallback ...

但我需要指定我正在使用的具体类型,因为我收到此错误:

Type alias 'AnswerCallback' can only be used with a concrete type or generic parameter base

如何指定 Router.AnswerCallback 之类的类型...其中 String 是“Answer”类型?

相反,唯一的工作方式是使用 var answerCallback: ((String) -> Void)

最佳答案

您需要一个符合Router 的类/结构,它有一个StringAnswer:

class StringRouter : Router {
typealias Answer = String
}

let callback: StringRouter.AnswerCallback? = nil

如果您只需要这样的类型别名,则不需要协议(protocol):

typealias AnswerCallback<T> = (T) -> Void

关于ios - 带有类型别名的协议(protocol)中的 AssociatedType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738736/

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