我在电报开源应用程序中看到了此代码,该如何创建这样的功能?该应用程序代码在哪里?这堂课是最后的课,不需要委托我们的协议
var vote:(MessageId, Data?) -> Void = { _, _ in }
答案 0 :(得分:0)
我不知道你在哪里看到的,但这是闭包变量。您可以在声明此vote
的类/结构上调用它,然后使用某些参数调用闭包内部的代码。
例如,如果您这样分配vote
someClass.vote = { messageId, data in // name parameters or not: _,data ; messageId,_ ; _,_
print("Voted")
}
然后如果从类/结构内部调用vote
vote(someMessageId, someData)
... "Voted"
被打印。
因此,这是有用的委托模式替换,它使您可以从一个类/结构声明从另一个类/结构调用此闭包时将发生的情况,而无需声明任何协议,分配delegate
并具有其他方法。
答案 1 :(得分:0)
这是一个闭包变量,您可以向其分配自己的闭包,并且只要调用vote
,代码就会被执行
var vote:(Int, String?) -> Void = { _, _ in }
vote = { (id, data) in print("\(id) \(data)") }
vote(32, "Hello")
请注意,由于我不熟悉Telegram
类,因此我更改了示例中的参数类型