与&运算符(Swift)不清楚

时间:2018-11-28 10:24:13

标签: swift

能否请您解释此语句中的&运算符是什么意思?您如何翻译此行?

let presenter: ContactListPresenterProtocol & ContactListInteractorOutputProtocol = ContactListPresenter()

1 个答案:

答案 0 :(得分:-1)

let presenter: ContactListPresenterProtocol & ContactListInteractorOutputProtocol = ContactListPresenter()

在这种情况下,presenter是类型'ContactListPresenter'的值,而该值又需要符合protocol'ContactListPresenterProtocolContactListInteractorOutputProtocol'

如果ContactListPresenter不符合上述两个协议,则会出现以下错误:

  

“ ContactListPresenter”类型的值不符合指定的值   输入'ContactListPresenterProtocol&   ContactListInteractorOutputProtocol'

协议组成

要求一种类型同时符合多种协议可能很有用。您可以将多个协议组合成具有协议组成的单个需求。协议组合的行为就像您定义了一个临时本地协议,该协议具有组合中所有协议的组合要求。协议组成没有定义任何新的协议类型。

协议组成具有SomeProtocol和AnotherProtocol的形式。您可以根据需要列出任意数量的协议,并用&分隔。除了协议列表以外,协议组成还可以包含一个类类型,您可以使用它来指定所需的超类。

要完全理解,请遵循

https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#

并按照协议中的协议组成进行操作